自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(528)
  • 资源 (13)
  • 问答 (4)
  • 收藏
  • 关注

原创 java 原子类累加器

前言LongAccumulatorDoubleAccumulator在多线程进程情况,我们可能希望计算某一共享变量,如页面访问次数,商品剩余数量秒杀。本文仅用LongAccumulator做说明。LongAccumulator

2020-11-15 21:54:39 855

原创 WIN32 基础控件的使用

代码模板int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow){ //弹出弹窗 DialogBoxA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG1), NULL, Dlgproc); return 0;}复选框代码寓意:我们点击显示之后会弹

2020-11-14 00:00:36 651

原创 WIN32 非模态对话框

//创建一个对话窗口实例 HWND dialogHwnd=CreateDialogA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG1), hwnd, mydialog); //显示 ShowWindow(dialogHwnd, SW_SHOWNORMAL); //不会阻塞代码继续运行非模态对话框关闭和模态对话框关闭有所区别INT_PTR CALLBACK mydialog(HWND hwnd, UINT msgType, WPARAM wparam, L.

2020-11-12 22:46:22 536

原创 WIN32 控件基础

首先我们看下如下界面:上面有一个弹窗,有两个控件,每个控件他们都是一个Window实例。我们首先看下点击事件的交互代码://这是控件所在弹窗的事件过程函数INT_PTR CALLBACK mydialog(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam) { //窗口关闭 if (WM_CLOSE==msgType) { EndDialog(hwnd, 0); return TRUE; } //WM_COMMAND

2020-11-11 23:58:34 1114

原创 WIN32 窗口以及模态弹窗创建显示

在常规界面开发中当我们设计好一个窗口类时,就要创建一个窗口实例进行显示。窗口实例分为很多种,弹出窗口,嵌套子窗口等。 //1.窗口类设计 WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = MYWNDPROC; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = NULL;

2020-11-11 16:21:27 1385

原创 WIN32 弹窗和父窗口交互

当弹出子窗口时,弹窗自动禁止父窗口的鼠标键盘交互。子窗口弹出时会做出如下几个事情:内部开启自己过程函数 监听事件循环禁止父窗口的键盘鼠标交互如果想要用户可以直接和弹出窗口的父窗口交互。可以调用EnableWindow启用即可。EnableWindow(GetParent(a), true);INT_PTR CALLBACK mydialog(HWND a, UINT b, WPARAM c, LPARAM d) { if (WM_CLOSE==b) { EndDialog(a,

2020-11-09 23:41:32 538

原创 java CAS包装类概述

原子更新基本类型:AtomicBooleanAtomicIntegerAtomicLong原子更新数组:4. AtomicIntegerArray5. AtomicReferenceArray6. AtomicReference原子更新引用7. AtomicReference8. AtomicRefernceFieldUpdater9. AtomicMarkableReference原子更新字段AtomicIntegerFieldUpdaterAtomicLongField

2020-11-09 18:09:58 269

原创 Atomic 特殊标记类

前言JDK提供了两个额外附加信息的Atomic帮助类,主要处理ABA类问题AtomicMarkableReferenceAtomicStampedReferenceAtomicMarkableReference额外添加了一个Boolean字段在其中,可以根据业务场景使用,如避免ABA问题,可是视为AtomicStampedReference精简版。AtomicStampedReference额外添加了一个Long类型字段在其中,可以避免ABA问题,甚至可以知道经过几次变化,相比Atom

2020-11-09 14:10:24 185

原创 java Atomic 字段类更新

我们会在某些需求下想要原子性更新某个类的某些字段,所以JUC提供了如下函数AtomicReferenceFieldUpdaterAtomicLongFieldUpdaterAtomicIntegerFieldUpdater本文仅使用AtomicReferenceFieldUpdater作为说明。下面是一个需求实例:我们有n个线程,每个线程需要从Conductor获取一个唯一的票id。class Conductor { //必须是volatile属性 volatile lo

2020-11-08 21:44:13 199

原创 WIN32发送自定义消息

在WIN32消息机制中,系统会发送各种消息到消息队列,开发可以调用GetMessage得到相关消息。WIN32的API也提供了对应开发自行的发送消息到消息队列的功能.SendMessageA直接发送消息到对应的窗口处理函数中,直到处理后函数才返回。PostMessageA将信息放入消息队列中,立即返回。//消息处理器LRESULT CALLBACK MYWNDPROC(HWND hwind, UINT unit, WPARAM wp, LPARAM lp) { if (WM_COMMAND =

2020-11-05 23:54:38 1425

原创 WIN32 资源加载

在Win32中图标样式,光标样式,菜单都是资源。而开发中我们这类资源,都记录在resource.h 和xxx.rc中。VS中双击rc文件跳转到资源视图即可管理资源相关下图是笔者几个资源分别为光标,图标,菜单.加载资源方式:在窗口类中指定,或者在窗口实例指定。如果窗口实例指定了某一个资源,那么窗口类的自动失效。关于资源id可以在资源视图的属性菜单栏中可见当然这一切的id都记录在头文件中...

2020-11-03 00:08:53 632

原创 java Atomic 数组类

前言我们看下Atomic对于数组类的封装AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray我们这里以AtomicLongArray 来做说明。为什么需要退出数组类别的原子操作类?可见性问题原子性操作问题此类问题可以查看博主另一篇文章: java Atomic 基本数据类型函数说明AtomicLongArray 类方法如下:length()数组长度get(int i)具有volatile读特性方式读取数组

2020-11-01 23:41:07 310

原创 java Atomic 基本数据类型

前言本文讲解如下三个基本类型的原子帮助类。AtomicIntegerAtomicBooleanAtomicLong由于三个类所提供的函数都差不多我们以AtomicLong为例进行说明。我们首先看下我们为何需要原子帮助类。Long类型写操作不是原子性,会分为两个32位进行写入(读取是原子性,可以查看网上相关文献)。++i操作非原子性多线程可见性问题多线程数据竞争相关问题,如并发修改其中举例如下:假设 业务逻辑A和业务逻辑B只能执行一个,但是在上诉代码中有可能同

2020-11-01 14:33:20 851

原创 ArrayBlockingQueue 迭代器

ArrayBlockingQueue 是一个多线程容器,但是为了方便读者只管的理解,本文所有理解都在单线程下做演示效果,但是多线程的结果是一样。ArrayBlockingQueue 迭代器比较特殊:他不会像HashMap那样会出现ModifyException异常可以遍历出新插入的元素(前提是迭代前没有删除过全部元素的行为)会自动跳过其他线程删除的元素。(但是不会跳过第一个元素)如果迭代器和ArrayBlockingQueue相差两个循环操作以上,那么迭代器无效但是可以输出开始遍历第一个元素

2020-10-29 22:25:43 1021

原创 WIN32 手动编译

前言我们编译的相关工程目录如下:Main.cpp 源代码Project1.rc 资源文件resource.h 资源头文件定义我们简单看下源代码Main.cpp 就是一个简单的带菜单的UI界面代码编译cpp 为 objcl /c /EHsc Main.cpp参数说明:/c编译不连接/EHsc 异常处理上述命令会把cpp的中所有头文件展开,编译成obj汇编文件头文件的寻找优先级:如果是以#include<>引入的那么首先会在环境变量中查找。对应的环境遍历名为 inc

2020-10-28 23:58:36 982

原创 win32 Menu消息

当我们创建一个win32 菜单时,当点击某个item时会发送WM_COMMAND消息.其中返回的信息中wParam中高低位表示不同的感念 //1.窗口类设计 WNDCLASS wc; //构造一个菜单,IDMyMenu时rc文件创建的id,使用MAKEINTRESOURCE函数来转化为字符串 wc.lpszMenuName = MAKEINTRESOURCE(IDMyMenu);LRESULT CALLBACK MYWNDPROC(HWND hwind, UINT unit, WPARAM

2020-10-28 23:06:27 393

原创 java 阻塞队列 ArrayBlockingQueue分析

sad

2020-10-25 21:44:52 363

原创 WIN32 定时器消息

设置每隔多少秒后发送消息WM_TIMER //每间隔1000毫秒后发送一个WM_TIMER //注意最后一个参数是函数指针,如果为空会发送消息否则回调函数 //当前设置计时器的id为23.可以用这个id取消这个计时器。KillTimer函数可以用来取消对应id的计时器 //KillTimer(hwnd, 23); SetTimer(hwnd, 23, 1000,NULL); MSG msg; //5消息循环 while (GetMessage(&msg, hwnd, 0, 0))

2020-10-23 23:44:13 435 1

原创 WIN32键盘消息

当用户按下键盘时Win32希桶会给我们发送WM_KEYDOWN

2020-10-23 23:30:04 350

原创 WIN32 绘制消息

Win32发送绘制信息

2020-10-21 23:37:28 813

原创 WIN32编程 最小化Demonstrate

设计一个窗口1 窗口类设计注册窗口类函数RegisterClass文档

2020-10-20 21:56:40 277

原创 WIN32 错误处理

我们调用Win32 相关函数时回经常出现各种错误,并且得到各种错误码,本文记录这方面的学习过程.如下win32函数重复注册两次,在运行时回弹出 "第二个错误"弹窗.int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow){ //1.窗口类设计 WNDCLASS wc; wc.

2020-10-20 21:56:20 1762

原创 SynchronizedXXX 系列并发容器分析

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-10-18 21:04:56 201

原创 ConcurrentHashMap 迭代器相关

在常规的HasMap或者ArrayList容器中一个线程再遍历中,其他线程插入或者删除会引起迭代器错误异常。ConcurrentHashMap可以支持并发情况下遍历元素 且可以感知到元素更新。例子我们看以下例子import java.util.Enumeration;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.TimeUnit;public class Main { public.

2020-10-11 18:04:43 1303 1

原创 ConcurrentHashMap addCount分析·

ConcurrentHashMap中addCount用于添加记录数和扩容判断添加记录我们首先分析添加记录数逻辑。第一次调用addCount函数下面的代码仅分析第一次调用时候//ConcurrentHashMap.java //@Contended注解是false shared(伪共享)相关知识可以参考本文引用文章 @sun.misc.Contended static final class CounterCell { volatile long value;

2020-10-07 18:30:44 1365

原创 ConcurrentHashMap transfer分析·

文章目录前言transfer初始化transfer哈希桶范围确定transfer 拷贝旧数据到新的哈希表参考文献前言本文分析1.8之下的源码。本文需要读者之前对HashMap有一定了解,如HashMap中的红黑树和链表等。我们回顾下HashMap基本结构:ConcurrentHashMap的扩容算法极其精妙,也是最晦涩难懂的部分.我首先将代码分段梳理各个部分的功能,在做细节说明。//ConcurrentHashMap.java private final void transfer(No

2020-10-07 00:18:38 938 1

原创 ReentrantLock Condition 分析

文章目录前言一、Condition类结构二、源码分析获得对象流程await 流程signal 流程前言Condition可以快速的帮助我们实现条件阻塞需求一、Condition类结构await:释放当前持有锁,然后进入休眠signal:唤醒进入休眠的线程其中有两个重要字段firstWaiter和lastWaiter。这两个字段会在ConditionObject中构造一个新的链表,用于存在await后休眠的线程,笔者在本文中称为,等候队列(等候列表)。而最原始的AQS链表笔者称为获取锁队列

2020-10-02 23:43:02 303

原创 ReentrantLock 超时锁2

本文需要前置知识,请参阅ReentrantLock 解决锁分析 1文章目录例子例子 ReentrantLock reentrantLock = new ReentrantLock(false); new Thread(new Runnable() { @Override public void run() { reentrantLock.lock(); .

2020-09-21 00:13:40 815

原创 ReentrantLock 锁分析 1

在阅读本文应对AQS有一定基础了解,可参阅博主其他博文AQS分析1-基于AQS自定义锁分析文章目录前言一、ReentrantLock基础用法二、类结构1.引入库2.读入数据总结前言ReentrantLock是一个基于AQS的可重入锁,实现了公平锁,非公平,超时,条件变量等一、ReentrantLock基础用法public class Main { public static void main(String[] args) { /** * 构造.

2020-09-20 18:24:12 363

原创 形形色色的Fragment生命周期

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Activity下的各类生命周期?二、使用步骤1.引入库2.读入数据总结前言 Fragment生命周期在不同的组件下使用具有不同的生命周期,如Activity中,viewpager2 或viewpager.一、Activity下的各类生命周期?二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot

2020-09-14 10:19:09 1124

原创 ASQ分析1-基于AQS自定义锁分析

AQS是并发包非常重要的基础锁类,我们看下如何利用其快速实现一个公平锁.public class SimpleLock extends AbstractQueuedSynchronizer { @Override protected boolean tryAcquire(int arg) { boolean compareAndSetState = compareAndSetState(0, 1); if (compareAndSetState) {

2020-09-06 01:08:41 323

原创 c-15 c++虚表

本文简单探究虚表实现。如下代码中有一个基类CPerson和子类CStudent:public.并有两个虚函数run和cry。#include<iostream>using namespace std;class CPerson {public: virtual void run() { cout << "Person is runing. \r\n"; } virtual void cry() { cout << "Person is cry.

2020-08-30 19:59:15 452

原创 自旋锁 CLH和CMS

在JAVA 中concurrent包中大多数API借助AQS完成,而AQS核心又在于CLH自旋锁上。The java.util.concurrent Synchronizer Framework

2020-08-23 21:40:03 497

原创 c-14 c++ 类函数和普通函数的区别

__thiscall

2020-08-21 00:17:30 1164

原创 c-13 内联函数

我们看下以下几种函数:(1) 常规函数调用:需要进行参数入栈,栈堆保存,上下文保存,所以在效率略低。(2) 宏函数:高效,但多次调用会引起程序体积增大。不易调试等。(3) 内联函数高效,在Debug版本自动关闭内敛,方便调试,在Release版本开启内敛。#include<stdio.h>#include<iostream>#include <stdlib.h>using namespace std;inline int sum(int

2020-08-16 20:09:54 189

原创 我所理解的JMM--6 final内存语义

我们直接看一个如下代码然后引出问题:class FinalExample { int i; FinalExample(int i) { this.i = i; }}public class Main { static FinalExample finalExample; public static void main(String[] args) { Thread thread = new Thread(() -> fina

2020-08-16 16:50:16 236

原创 c-12 函数命名重载与名称粉碎

我们名称粉碎

2020-08-15 20:43:34 706 1

原创 我所理解的JMM--5 volatile内存语义

综述本文讲解volatile在jsr 133规范内存语义,本文需要前置知识(1) new 是否为原子操作 博主对new的理解文章(2) 内存屏障 博主内存屏障知识点文章我们先看看volatile具有哪些功能(1) 保证long,double是单次读写的原子性(2) 变量的可见性(3) 基于happer-before规则下禁止重排序(1)保证long,double是单次读写的原子性背景硬件知识:数据总线:用于传输的管道.我们常规的现代化pc数据总线往往都低于64位.(64 位cp

2020-08-09 22:24:41 295

原创 c-11 堆内存

概述在c语言中,堆区可以自由被开发者掌控。高度的自由也需要带来高额的管理成本,如申请后需要手动释放,本文是笔者学习堆区的笔记。malloc和freemalloc:void *malloc( size_t size);参数:size申请堆内存大小。返回:成功返回内存地址,失败返回NULLmacllo内存格式:(注意博主在vs2015中内存结构如上图所示,不同编译器有所不同)堆类别决定系统如何管理这个块内存。#include<stdlib.h>int main(

2020-08-03 23:16:52 227

原创 我所理解的JMM--4 happen-before

Happen-Before 概述Happen-Before后文简写为HB.HB是JMM

2020-08-02 21:09:34 283

MyDebugger.rar

MyDebugger.rar

2021-12-12

frida-12.8.20-py2.7-macosx-10.9-intel.egg

mac frida相关工具。如果你使用pip install frida-tools过慢时,请下载此资源,然后放入/Library/Python/2.7/site-packages/目录下

2020-04-05

腾讯2016安全比赛第一题

安全比赛第一题的题目apk.要求写出注册机.考点位于反编译后的so库.

2018-07-21

AIDL bindservice流程图

aidl binserive的流程图 内含png oom两个原文。http://blog.csdn.net/qfanmingyiq/article/details/78094417

2017-09-29

Android使用的libjpeg库文件

可以用于Android下使用libjpeg。内部有arm x86 x64的静态库和头文件

2017-08-29

电脑Gif制作器licecap126-install

电脑安装软件后移动窗口到某一区域点击record录制 然后按下stop键生成gif图

2016-10-20

Navicat Premium数据管理

Navicat Premium 可视化管理一些轻量级数据库如 mysql sqlite内含补丁

2016-09-07

仿QQ截图工具

一款仿照QQ截图的工具简单实用

2016-09-06

ColorCop屏幕取色器

获取屏幕某个点的RGB颜色值 无广告简洁 开发者必备

2016-09-05

fastjson 阿里巴巴json工具jar包

阿里巴巴的json解析生成 的jar包 如快速解析json生成javabean 或者javabean生成json

2016-09-02

fastjson 阿里巴巴的解析生成json工具

2016-09-01

GSON 包含源码和DOC

谷歌解析json工具

2016-09-01

json解析器

用于解析json数据 并且清晰的结构图

2016-08-30

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

TA关注的人

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