乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

右脑记忆法之联想记忆

发表于 2019-11-26

严格来说 联想记忆不属于单独的右脑记忆法,由于在联想的过程中,涉及到图像 声音甚至是感觉,

因此 联想记忆更像是一种记忆检测和整理的手段 通过画思维图并且利用联想的手段联想出脑袋中所有的知识 这些知识的载体多种多样 有可能是一幅幅图像 也有可能是一段声音,或者是一阵刺骨的疼痛

联想有检测右脑知识的功能 当然他也有记忆的功能, 通过联想手段记忆知识的特点是:

用已知的知识去联想新的知识,或者说将新知识关联到熟悉的知识上

这也是为什么懂得越多,学得越快

联想记忆重要分为两大种

  1. 相似联想
  2. 对比联想

相似联想

新事物和脑海中已知事物(图像 声音等等)相似或者接近,类似举一反三

对比联想

新事物和脑海中已知事物刚好是两个极端,例如水和火

总结

联想记忆有

  • 总结复习和检测右脑知识的功能

  • 快速记忆新知识的功能 (将信息联想于已知事物,可能是相似也可能是对比)

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Android面试题之Activity和Fragment生命周期 一次性记忆

发表于 2019-11-26

每当我们换工作面试之前,总是会不由自主的刷起面试题,大部分题我们反反复复不知道刷了多少遍,但是今天记住了,等下一次面试的时候又刷着相同的面试题,我就想问在座的各位,Activity的生命周期,你们到底刷过多少遍 [哭笑] 作为一名程序员 把时间浪费在重复性劳动上是极其不能忍受的 因此 为了让自己省去不必要的脑力开销 我给自己总结了一份面试相关的记忆技巧,在这里分享给大家 记忆不是目的 把知识变成自己的才最关键

前提

需要熟悉Activity的生命周期 通过Activity的周期去对比理解和记忆Fragment生命周期

Activity的生命周期

假设你已经非常熟悉Activity的生命周期了,那么接下来咱们看Fragment的生命周期图

Fragment的生命周期

找出他和Activity的相同之处

这部分完全和Activity一模一样 可以不用记忆它,咱们来看不同的地方

其实这部分才是人们最容易搞混和记不住的地方 那咱们来分析一下:

Fragment比Activity多了几个生命周期的回调方法

  • onAttach(Activity) 当Fragment与Activity发生关联的时候调用
  • onCreateView(LayoutInflater, ViewGroup, Bundle) 创建该F
  • onActivityCreated(Bundle)当Activity的onCreated方法返回时调用
  • onDestroyView() 与onCreateView方法相对应,当该Fragment的视图被移除时调用
  • onDetach() 与onAttach方法相对应,当Fragment与Activity取消关联时调用
    PS:注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现

这些方法理解起来并不费劲 但是要完美记在脑子里 还是需要花上一番功夫的

那咱们一个一个来 先从创建开始:

1.首先 onAttach方法: 和Activity进行关联的时候调用 这个放在第一个 应该好理解

2.我们知道 Activity在onCreate方法中需要调用setContentVIew()进行布局的加载,那么在Fragment中onCreateView就相当于Activity中的setContentVIew

3.onActivityCreate是一个额外的方法 为了告诉Fragment当前Activity的创建执行情况 方便Fragment的后续操作

先后顺序

已知Fragment是依赖Activity而存在的 它们都有着相同的生命周期方法 那么先调用Activity的还是Fragment的呢? 这里分两种情况

  • 如果是创建 那么先创建Activity 后创建Fragment
  • 如果是销毁 那么先销毁Fragment 后销毁Activity

网上有很多文章说Activity的onCreate方法在Fragment的onCreateView之后执行,这是不正确的 Fragment一般都是在Activity的onCreate()中创建 要么通过布局加载的方式 要么通过new创建Fragment对象的方式 如果没有Activity的onCreate 哪来的Fragment

总结

上面的理解好后,咱们再整理记忆一下

一句话 Activity是老子 Fragment是小子 进门先让老子进 滚蛋先让小子滚 加载布局createView 老子完事吱一声(ActivityCreated)

希望有帮到你

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

原生app如何跨进程调起微信小程序

发表于 2019-11-21

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

微信小程序开发入门篇

发表于 2019-11-21

对于初学者来讲,快速掌握一门新技能,不在于把每一步都搞透,而在于先把整个流程跑通,

先控大局,再究其细节 这是快速学习的基本技巧之一

第一步 申请小程序账号

注:一个邮箱只能申请一个小程序账号

注册链接:https://mp.weixin.qq.com/wxopen/waregister?action=step1

第二步 获取小程序Appid

注册成功后登陆账号

进入开发设置界面 复制appid 一会开发需要用到

第三步 下载小程序开发工具

官方下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

安装完毕后打开,然后新建项目

填入之前复制的appid,新手的话选择不使用云服务即可,这样目录相对简单一些

创建成功后会自动生成一些目录和文件

小程序初始化目录:

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。

一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:

文件 必需 作用
app.js 是 小程序逻辑
app.json 是 小程序公共配置
app.wxss 否 小程序公共样式表

一个小程序页面由四个文件组成,分别是:

文件类型 必需 作用
js 是 页面逻辑
wxml 是 页面结构
json 否 页面配置
wxss 否 页面样式表

1:page 页面文件夹 存放项目页面渲染相关文件

2:utils 存放js库和数字格式化文件

3: 配置文件

第四步 程序开发

需要具备前端相关知识,如果还不具备,建议先学习html+css+js 基础

个人开发大多以展示为主,可以不用开发后台

第五步 上传小程序

开发完之后,可以在开发工具选项点击上传按钮将代码至微信后台。如下:

填写版本号和项目备注

第六步 提交审核

上传成功后进入后台管理界面,将刚才上传的程序提交给微信官方审核

1574320522905

一般一两天就能查看审核结果,通过审核之后,还需要发布上线

线上版本发布后,这时你就可以在微信搜索中搜到我们自己的小程序了

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

UE4(虚幻引擎)之常用快捷键

发表于 2019-11-21

虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷。下面将列举它们出来:

按键 动作
鼠标左键 选择actor
鼠标左键+拖动 前后移动和左右旋转摄像头
鼠标右键 选择actor并打开右键菜单
鼠标右键+拖动 旋转摄像头方向
鼠标左键+鼠标右键+拖动 摄像头上下左右移动
鼠标中键+拖动 摄像头上下左右移动
滑轮向上 摄像机向前移动
滑轮向下 摄像机向后移动
F 聚焦选中的actor
箭头方向键 摄像机前后左右移动
W 选中平移工具
E 选中旋转工具
R 选中缩放工具
W+任何鼠标按键 摄像机向前移动
S+任何鼠标按键 摄像机向后移动
A+任何鼠标按键 摄像机向左移动
D+任何鼠标按键 摄像机向右移动
E+任何鼠标按键 摄相机向上移动
Q+任何鼠标按键 摄像机向下移动
Z+任何鼠标按键 增加视野(鼠标释放后会恢复原状)
C+任何鼠标按键 缩小视野(鼠标释放后会恢复原状)
Ctrl+S 保存场景
Ctrl+N 创建新场景
Ctrl+O 打开一个已有的场景
Ctrl+Alt+S 另存为新场景
Alt+鼠标左键+拖动 复制当前选中的actor
Alt+鼠标右键+拖动 摄像机前后移动
Alt+P 进入Play预览模式
Esc 退出预览模式
F11 进入仿真模式

官方提供

Viewport

Hotkey Action
LMB Select actor under cursor, replacing selection.
Ctrl + LMB Add / Remove actor under cursor to selection.
Shift + LMB Add actor under cursor to selection.
ESC Clears selection.
TILDE Toggles command console.
Perspective
RMB + Drag Forward / Backward Rotate camera up / down.
RMB + Drag Left / Right Rotate camera left / right.
( RMB + W ) | Numpad8 | Up Move camera forward.
( RMB + S ) | Numpad2 | Down Move camera backward.
( RMB + A ) | Numpad4 | Left Move camera left.
( RMB + D ) | Numpad6 | Right Move camera right.
( RMB + E ) | Numpad9 | Page Up Move camera up.
( RMB + Q ) | Numpad7 | Page Dn Move camera down.
( RMB + C ) | Numpad3 Zoom camera in.
( RMB + Z ) | Numpad1 Zoom camera out.
LMB + Drag Forward/Backward Move camera forward /backward
LMB + Drag Left/Right Rotate camera left /right
LMB + RMB + Drag Move camera up /down
Orthographic ( Top | Front | Side )
LMB + Drag Creates selection box, selects contained actors, replacing selection.
Shift + LMB + Drag Add actors in selection box to selection.
Ctrl + Alt + Drag Remove actors in selection box from selection.
RMB + Drag Pan camera.
LMB + RMB + Drag Zoom camera in /out.
Focusing
F Focus camera on selected object or group.
Camera view
Alt + G Perspective camera.
Alt + K Side camera.
Alt + J Top camera.
Actor Manipulation
Space Toggle between ( Translate | Rotate | Scale ), see toolbar for selection.
W Selects Move tool.
E Selects Rotate tool.
R Selects Scale tool.
V Toggles vertex snapping.
LMB + Transform Axis + Drag Transforms selected actors depending on active tool.
Perspective (scale works evenly on all axes, rotate/move works as expected)
Ctrl + LMB + Drag Transform selected actor(s) along the x-axis.
Ctrl + RMB + Drag Transform selected actor(s) along the y-axis.
Ctrl + LMB + RMB + Drag Transform selected actor/s along the z-axis.
Orthographic
Ctrl + LMB + Drag Transform selected actor(s) along the view plane axis.
Ctrl + RMB + Drag Rotate selected actor(s) along the view plane axis.
Display
G Toggles Game Mode rendering.
Ctrl + R Toggles real-time playback.
F11 Toggles Fullscreen.

链接地址:https://leetnightshade.com/blog/unreal-engine-hotkeys

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

告诉你为什么十六进制表示的颜色值是两位代表一种颜色

发表于 2019-11-20

学习本篇之前需要先了解《十六进制和二进制的互相转换》

前提

我们知道每个像素都是由三原色红绿蓝三种颜色组成

1
RGB //Red(红色)  Green(绿色)  Blue(蓝色)

一个像素点可以由4组8位二进制数表示(不要问为什么 重点)

1
2
3
4
5
6
7
1 1 1 1   1 1 1 1    第一组 表示红色 R

0 0 1 1 0 1 0 0 第二组 表示绿色 G

1 1 1 1 1 1 1 1 第一组 表示蓝色 B

1 1 1 1 1 1 1 1 第一组 表示表明度 A

也就是我们熟知的RGBA

结果

既然我们已经知道了二进制的颜色, 根据二进制转十六进制 利用8421法必然会将每个颜色的二进制分为两组 比如:

1
2
8 4 2 1   8 4 2 1
0 0 1 1 0 1 0 0

第一组为:2+1=3

第二组为:4

那么其对应的十六进制结果为0x34

所以RGBA每个通道需要两位十六进制进行表示

你学会了吗

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

利用8421法进行十六进制与二进制的互相转换 一学就会

发表于 2019-11-20

二进制转十六进制

已知二进制值

1
110100

从右到左4位4位的进行分割(不要问为什么),位数不足的在左边添0 得到两组二进制:

1
0011 0100

然后利用8421进行对应

1
2
8 4 2 1   8 4 2 1
0 0 1 1 0 1 0 0

把0对应的值去掉 1对应的值相加得到:

第一组为:2+1=3

第二组为:4

那么其对应的十六进制结果为0x34

十六进制转二进制

同理 已知十六进制

1
0x52

第一组是5 第二组是2 对应关系为:

1
2
8 4 2 1   8 4 2 1
0 1 0 1 0 0 1 0

由于4+1=5 所以第一组4和1下面为1其余为0,同样第二组2下面值为1

最后得到二进制值为:01010010

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

十进制和二进制的快速转换 一学就会

发表于 2019-11-20

十进制转二进制

首先 我们需要背诵2的2到10的幂次方,这个我相信对大家都不难,它们分别是

1
1、 2、4、8、16、32、64、128、 256、 512 、1024

这些对应的二进制分别是

1
1、10、 100 、1000 、10000 、100000、 1000000 、10000000、 100000000 、1000000000.

接下来,就是开始心算的时候,比如:

9=8+1  对应二进制 1001 

17=16+1 对应二进制  10001

 34=32+2  对应二进制    100010

  245=128+64+32+16+4+1  对应二进制 11110101

每次从高位依次往下写,比如34 从32 往下写 依次是

1
32、16 、8 、4 、2 、1

在该位数上分解的数有该数就写1,没有就写0。得到:

1
1、0、0、0、1、0 //也就是100010

二进制转十进制

同理,也是从高位开始计算,;先数二进制数比如:

     101010   6个数  就从2的(6-1)次方开始计算

          分别是32+8+2=42

找到最大位,依次往下数,该位上是1的话,就写出该数,最后相求和即可。

是不是很简单呢

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

js十大邪术之一 图片隐写术

发表于 2019-11-19

1、什么是图片隐写术?

权威的wiki说法是“隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。”,图片隐写术简而言之就是利用图片来隐藏某些数据,让人一眼看去以为是很普通很正常的图片,但其实里面隐藏着某些“机密”数据。

据传911事件里,KB份子就是通过黄色图片来传递信息而躲过了FBI的监控。还有大众点评也是通过图片隐写术来保护自身合法权益。所以图片隐写术是一个双刃剑,就看你用它做什么了。

比如下面这张图片:

看起来是一张很漂亮的风景照片,但其实它里面却藏着一张美女图(注:美女图片来源于淘宝某店),如下:

是不是很惊艳?看得你热血沸腾鼻血都往外冲呢?这就是图片隐写术的历害之处,“机密”隐藏于无形之中!

2、图片隐写术是怎么做到的?

   图片隐写有多种方式,我这里介绍的是采用图片的最低有效位(LSB)进行隐写。其原理就是图片的像素点都是由三原色(RGB)构成(如下图),由这三原色可以组成各种颜色,如CSS里的颜色定义#FFFFFF,即是三原色的16进制值写法,每个颜色各占用8bit。而LSB隐写就是修改像素中每个颜色值的最低位值,而这些修改,人眼一般是分辨不出来的,从而达到数据隐藏的目的。

  譬如我们想把’A’隐藏进来的话,如下图,就可以把A转成16进制的0x61再转成二进制的01100001,再修改为红色通道的最低位为这些二进制串。

(注:以上图片和示例来源于Wooyun)

3、Javascript实现的图片隐写术

  代码项目见GitHub: https://github.com/kingthy/imagemask

  • 在线演示 https://ipfs.io/ipfs/QmUG1TKotQYsp6bSw6pX4crFWfhJRNTnJre7buEaYYBV72
  • 使用示例
1
2
3
4
5
6
7
8
9
<script type="text/javascript" src="imagemask.js"></script>
<script type="text/javascript">
var mask = new ImageMask({
debug: false, //是否开启调试模式
charSize: 16, //字符的字节位数,默认为16,即字符最大值为0xFFFF
mixCount: 2, //隐写数据要混合到图片颜色值里的最低位数,值范围在1-5,默认为2,如果大于3,则图片会失真很严重
lengthSize: 24 //数据长度值的占用字节位数,默认为24,也即数据长度最大值为16777215
});
</script>

  

  • 隐写文本
1
2
3
4
5
6
7
8
9
10
11
//脚本里传入页面的canvas对象和要隐写的文件
var output = document.getElementById('output');
var canvas = document.getElementById('canvas');
var file = document.getElementById('file');
mask.hideFile(canvas, file.files[0], , function(result){
if(result.success){
output.src = canvas.toDataURL();
}else{
alert(result.message);
}
});

  

  • 隐写文件
1
2
3
4
5
6
7
8
9
10
11
//脚本里传入页面的canvas对象和要隐写的文件
var output = document.getElementById('output');
var canvas = document.getElementById('canvas');
var file = document.getElementById('file');
mask.hideFile(canvas, file.files[0], , function(result){
if(result.success){
output.src = canvas.toDataURL();
}else{
alert(result.message);
}
});

  

  • 读出图片里隐写的文本
1
2
var canvas = document.getElementById('canvas');
var message = mask.revealText(canvas);

  

  • 读出图片里隐写的文件
1
2
var canvas = document.getElementById('canvas');
var file = mask.revealFile(canvas); //file.name = 文件名称, file.data = 文件数据

  

4、示例图片

  • 原图
  • 隐写一章3千多字的小说内容后的图片效果

  • (隐写什么小说内容,各位有兴趣的将图片保存下来,然后在演示页面里读出来即可知道。)*

以上两张(包括上面有美女的那张)图片效果几乎是一样的,人眼是看不出来有任何变化。

5、附加说明

  1)、LSB方式的隐写图片只能存储为PNG或者BMP图片格式,并且不允许再采用有损压缩(比如JPEG),否则会丢失隐写的数据!

​ 2)、图片里可以隐写任何数据,并且可以存储的数据多少由图片的大小(长宽)来决定。也许一张图片就能存储下一部圣经的所有文字。

6、脑洞时间

  工具是有了,我们可以用来做些什么呢?发挥你的想象吧:)

​ 1)、防采集:将文本内容隐写到图片里,这样就能防直接的采集(比如小说网站、内容原创网站) ,当然了,只能防君子了。

​ 2)、版权水印:将版权水印(文字或者图片)或者其它身份识别标记(如公司里防泄密)隐写到图片里,如果对方直接盗用,则可以起到鉴别作用(如大众点评网案例)。当然了,如要防“攻击”(压缩,变形,涂改等)则需要更高深的隐写方式。有兴趣的可阅读啊里月饼事件引发的知乎讨论贴里的牛人回复。

​ 传递门:https://www.zhihu.com/question/50735753/answer/122717091

​ 3)、防监控:将文本或图片隐写到图片里,可以防机器(某墙?)监控(比如整网站都是好孩子图片或风景图,但其实都是坏孩子图片或者XX小说、XX内容)

​ 4)、文件下载: 直接将文件存于图片里,绕过文件格式限制问题。比如很多图床只能传图片,但经过隐写后就可以图片里藏任意文件了,比如大家都喜欢的种子,当然了,要求图床不会再进行图片再次压缩。

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

给老司机推荐几个学习网站

发表于 2019-11-19

http://www.mayadid.com/archiver/

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…484950

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

493 日志
143 标签
RSS
© 2025 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%