版权声明:本文为博主原创文章,未经博主允许不得转载. BOOL ExecuteAsUser(LPCWSTR lpszUserName, LPCWSTR lpszPassword, LPCWSTR lpszApplication, LPCWSTR lpszCmdLine) { if(NULL == lpszUserName) { return FALSE; } if(NULL == lpszApplication) { return FALSE; } BOOL bRet = FALSE; WCHA…
前言 目前最流行的两大安全框架:SpringSecruity.Shiro 权限控制,无非就是:前端控件是否可见.是否允许请求/访问URL 本文分享一个简单的URL访问权限校验,支持/./*./**等情况 代码 package cn.huanzi.qch.baseadmin.util;/** * 一个简单的URL访问权限校验工具类 */ public class UrlSecurityUtil { /** * 检查requestUri是否包含在urls中 */ public static bool…
之前写过一篇Kafka ACL使用实战,里面演示了如何配置SASL PLAINTEXT + ACL来为Kafka集群提供认证/权限安全保障,但有一个问题经常被问到:这种方案下是否支持动态增加/移除认证用户——这里给出明确的答案:不可以!因为所有认证用户信息全部配置在静态的jaas文件中,故无法在不重启broker的情况下实现用户增减.这一次我以Kafka 2.1.0版本为例演示配置SASL SCRAM + ACL来实现如何动态增减用户,另外也想完善和优化上一篇中的一些不足之处(比如说不用再修改初…
BOOL ExecuteAsUser(LPCWSTR lpszUserName, LPCWSTR lpszPassword, LPCWSTR lpszApplication, LPCWSTR lpszCmdLine) { if(NULL == lpszUserName) { return FALSE; } if(NULL == lpszApplication) { return FALSE; } BOOL bRet = FALSE; WCHAR* pUserName = NULL; WCHAR*…
很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能很快用这个上手. 本文的文字和案例根据java web轻量级开发面试教程改编. 1 Spring MVC代码的讲解 步骤一,创建Web项目,编写web.xml,在其中指定使用Spring的MVC,主要的代码如下. 1 <servlet> 2 <servlet-name>spring&l…
netty(2)---搭建一个简单服务器 说明:本篇博客是基于学习慕课网有关视频教学.效果:当用户访问:localhost:8088 后 服务器返回 "hello netty"; 一.服务端线程模型 下面的做法是服务端监听线程和 IO 线程分离,类似于 Reactor 的多线程模型,它的工作原理图如下(盗的图): 这里netty版本是4.1.25 <dependency> <groupId>io.netty</groupId> <artifac…
写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://naotu.baidu.com/file/83c5554e23156ce6be2a3349889cc0d4?token=a6081a1bc0fffc95…
想要完全理解代码,需要理解 this 和闭包的含义. Promise是什么 简单来说,Promise 主要就是为了解决异步回调的问题.用 Promise 来处理异步回调使得代码层次清晰,便于理解,且更加容易维护.其主流规范目前主要是 Promises/A+.对于 Promise 用法不熟悉的,可以参看篇文章——es6学习笔记5--promise,理解了再来看这篇文章,会对你有很大帮助的. 在开始前,我们先写一个 promise 应用场景来体会下 promise 的作用.目前谷歌和火狐已经支持 e…
关于shader的一个简短的历史 在DirectX8之前,GPU有一个固定的方法去变换顶点和像素,称为“固定管线”.这使得在将它们传递给GPU后,开发者不可能操作顶点和像素的变换. DirectX8介绍了顶点着色器和像素着色器,这使得在通过渲染管线时,开发者可以决定顶点和像素如何被处理,这给了开发者很大的灵活性.但是,编写一个着色器需要汇编语言,这又使开发者遇到了难处,而且,shader 1.0是唯一支持的一个版本. 这种情况在DirectX9发布后改变.DirectX9给了开发者使用HLSL开…
修改数据结构   基本的 API 已经定义好了,现在是个修改 Person 对象结构的好时机.只要修改 Person 结构体,数据库和 API 都会自动做出相应的修改.   我要做的是在 Person 结构体中添加 city 字段,就这一行,没有其他改动. type Person struct { ID uint `json:"id"` FirstName string `json:"firstname"` LastName string `json:"l…