自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

转载 JMM内存模型

Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。 如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,

2018-01-30 16:53:17 11910 4

原创 Trie树-字典树

又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 特点:根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符

2018-01-30 14:50:38 250

原创 git学习

https://learngitbranching.js.org/ https://try.github.io/levels/1/challenges/

2018-01-05 11:19:06 279

转载 Java Thread dump 日志分析

jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable   等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注)暂停,Suspended对象等待中,Object.wait() 或 TIMED_WAITI

2018-01-05 11:03:21 498

转载 MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问

2018-01-05 10:50:07 263

原创 MySQL注意事项

一、核心原则  1.不在数据库做复杂运算:包括但不限于复杂的排序,聚合,连接操作,请移至业务层 2.控制单表数据量:单表记录控制在1000w 3.控制单表字段数量:字段数控制在20以内 4.平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 5.拒绝3B:拒绝大sql,大事物,大批量;拒绝容忍小表上高频 filesort 的 SQL;  二、字段类 6.数值类型

2018-01-04 19:38:32 340

原创 JAVA锁机制

synchronized和Lock均为可重入锁。即可为该对象多次加锁,通过锁标志+1进行操作;当所标志为0时,释放所。重入锁目的是为防止死锁发生。 synchronized:基于系统内核实现线程等待(通过linux系统pthread_mutex_lock命令进行等待)。         a、将线程通过CAS操作放入ContentionList队列头部。         b、当Owne

2017-09-26 10:55:22 215

原创 ThreadLocal学习

ThreadLocal是线程变量,主要为防止多线程环境中,变量访问冲突问题。 ThreadLocal为每个线程创建了一个变量副本,实际就是在线程Thread类中有个私有属性,如下图: 实际数据存储是在ThreadLocal中的ThreadLocalMap中存储,ThreadLocal相当于一层包装,所有的get,set操作都是对这个map进行操作。 这个map的key值都

2017-09-26 10:54:58 182

原创 linux关于bashrc与profile的区别

bashrc与profile的区别 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。 交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,sh

2017-09-26 10:52:30 192

原创 JVMGC机制

GC就是找到不用的对象,回收对象,释放内存。 名词解释: minor gc:年轻代回收 major gc/full gc:年老代回收 当进行年老代回收时,往往伴随至少一次年轻代回收。但在PS回收器时,则会选择只进行major gc。 对象的移动过程: 初始在eden区分配,当进行一次年轻代gc后,放入存活区。当在存活区来回复制N次(可配置),进入年老代。大对象也会直接放

2017-09-26 10:51:48 257

转载 Linux IO模式及 select、poll、epoll详解

一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进程的阻塞 - 文件描述符 - 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访

2017-09-26 10:50:54 271

原创 JAVA进程诡异消失,oom killer干的

在beta环境中,俩个项目经常性的崩溃。PS查看进程,JAVA进程消失。 先加Dump、ErrorFile查看,再次发生时,俩个日志均未输出。 尝试复现,有时发生,有时正常,很不规律。 在这过程中,top查看java进程,发现发生时,JAVA的内存会从50%一直飙升到95%,然后JAVA进程就消失了。 查看linux日志,/var/log/message 发现这么一段日志。 Ma

2017-09-26 10:39:59 4459

原创 Android逆向反编译基本方法

1、apktool + dex2jar + jd-gui 1)、通过apktool反编译apk,会反编译出smali文件和AndroidMainFest.xml等资源文件。 2)、将apk后缀名改为zip,然后解压,得到.dex文件,然后通过dex2jar转成jar文件。 3)、通过jd-gui查看jar包文件。   2、jadx 官网:https://gith

2017-09-26 10:36:53 820

原创 Android逆向初级-smali日志注入

通过apktool反编译得到的smali文件,用UE或者文本编辑器可以打开。 smali文件有些类似汇编语言。我们这里只是要注入日志,无需过多了解语法。 基本分3步。 1、在每一个方法下都有一个.locals 3 这个语句。这个是申请寄存器个数,也就是定义变量数。需要在原有基础上增加1. 2、找到关键的变量或者方法调用地点,在下面定义我们自己的日志标签变量。    

2017-09-26 10:34:17 1800

原创 Android逆向apktool使用

官网地址:https://ibotpeaches.github.io/Apktool/ apktool主要有俩个命令 1、反编译 apktool d xxx.apk -o xxx/xxx 2、回编译 apktool b srouce -o xxx.apk source是反编译后的目录

2017-09-26 10:33:17 395

原创 Android入门

1、初始环境搭建 下载Android studio,安装,会安装安卓开发使用的SDK和开发工具(IDE)。 MAC系统,SDK默认安装在/Users/xxx/Library/Android下。 将platform-tools设置为path,方便adb命令调用。 2、apk签名 APK安装到手机上,是需要签名。未签名的apk是不允许安装的。 第

2017-09-26 10:29:25 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除