next

安装Android SDK (Android Studio),配置adb

旧时模样 提交于 2021-01-04 05:00:24
Android SDK(Software Development Kit,软件开发工具包)提供了Android API库和开发工具构建,可用来测试和调试应用程序。简单来讲Android SDK可以看作用于开发和运行Android应用的一个软件。Android SDK已经不再提供完整的独立下载,需要通过Android Studio安装 Android Studio是Android应用的集成开发工具,用于开发与调试Android应用,是Google公司在IntelliJ IDEA开源版本基础上开发的。、 在安装Android 开发环境之前,需要先安装Java开发环境,参考我之前写的文章: 配置Java环境 Android Studio 官网: https://developer.android.google.cn/studio/ 各位可根据自己的系统下载对应的版本,本文以windows10为例,下载并安装 android-studio-ide-191.6010548-windows.exe。 安装步骤 1.双击下载的安装包文件,点击Next 2.勾选Abdroid Virtual Device,点击Next 3.选择安装路径,点击Next 4.点击Install进行安装 5.安装完成点击Next 6.点击Finish,完成安装后启动Android Studio 7.首次启动时

数据库中存储过程、函数、触发器

空扰寡人 提交于 2021-01-04 04:04:37
存储过程、函数、触发器的区别 比较项目 存储过程 函数 是否有返回值 可以有,也可以没有 必须有且只有一个 是否可以单独执行 可以 必须通过execute执行 SQL语句(DML或SELECT)可否调用 不可以 可以,且可以位于FROM关键字的后面(由于可以返回表对象) 参数类型 可以使用IN、OUT、IN OUT三种模式的参数 只有IN,Oracle可以使用IN、OUT、IN OUT三种参数 返回值类型 可以通过OUT、IN OUT参数返回零个或多个参数值 单一值或一个表对象 【我的理解】 SQL语句: 一句SQL语句就是一个命令,而一般来说一个命令只执行一件事。 存储过程: 里面可以有多个SQL语句,用事物可以保证多句语句必须都执行成 功,这个存储过程才执行。 触发器:是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则。触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACK TRANSACTION回滚撤销操作。 【站在巨人的肩膀上】 触发器原理: 触发器与存储过程可以说是非常相似,可以说是一种变种的存储过程,触发器和存储过程一样都是SQL语句集,通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据的完整性。触发器不同于存储过程

练手WPF(二)——2048游戏的简易实现(上)

夙愿已清 提交于 2021-01-03 21:29:12
原文: 练手WPF(二)——2048游戏的简易实现(上) 1、创建游戏界面 编辑MainWindow.xaml,修改代码如下: < Window.Resources > < Style TargetType ="Label" > < Setter Property ="Height" Value ="105" /> < Setter Property ="Width" Value ="105" /> < Setter Property ="HorizontalContentAlignment" Value ="Center" /> < Setter Property ="VerticalContentAlignment" Value ="Center" /> < Setter Property ="FontWeight" Value ="Bold" /> < Setter Property ="Opacity" Value ="0.7" /> </ Style > < Style TargetType ="Rectangle" > < Setter Property ="Width" Value ="105" /> < Setter Property ="Height" Value ="105" /> < Setter Property ="Fill" Value ="

JDBC04----预编译语句介绍

元气小坏坏 提交于 2021-01-03 17:01:49
sql的拼接很麻烦,且容易出错,因此就可以使用预编译语句。 接口java.sql.Statement有两个子接口:CallableStatement,PreparedStatement 有两种类型的sql语句: 1.静态sql 在执行之前就知道了sql语句的形式。 2.动态sql 一. Statement接口的实现类 1. PreparedStatement PreparedStatement用于预编译模板SQL语句,在运行时接受SQL输入参数。eg:PreparedStatement ps=conn.preparedStatement(sql); 在性能和代码灵活性上有显著的提高 PreparedStatement对象 使用?作为占位符 ,即参数标记;eg: select *from stu where id=?; insert into stu value(?,?,?); 使用setXXX(index,value)方法将值绑定到参数中,每个参数标记是其顺序位置引用,注意index从1开始;eg:ps.setInt(1,stu.getId()); PreparedStatement对象执行sql语句:executeQuery()、executeUpdate(),注意,他们没有参数; eg:ps.executeUpdate(); 2. 举例 public Stu get( int

FPGA总结——杂谈

ぃ、小莉子 提交于 2021-01-03 14:34:25
数字设计    一、关于组合逻辑    竞争冒险 :一个逻辑门的多个输入信号同时跳变(路径时延不同,使得状态改变的时刻有先有后)。这种现象叫做竞争,引起的结果称为冒险。    消除毛刺(冒险) :(1)增加冗余项;(2)加滤波电容;(3)加选通信号;     注:在平常实践中,可以使用如下小细节:(1)输出加D触发器;(2)使用格雷码;       注意理解组合逻辑与时序逻辑的差别。 二、关于时序逻辑 1. 时钟基础    1.1 常见时钟类型     (1) 全局时钟 ;     (2) 内部逻辑时钟 ,即组合逻辑和计数器分频产生的时钟。对于前者,一般禁止使用,对于后者,也应尽量少使用(用PLL、DLL、DCM替代);     (3) 门控时钟 ;(一般在组合逻辑中使用,且驱动门控时钟的逻辑都是只包含一个与门/或门,尽量避免使用,除非要求被使用以降低系统功耗)         推荐的门控时钟电路:                      (拓展) 使能时钟 :主要是用于时序逻辑中,比门控时钟要来的稳定。     1.2 时钟抖动     芯片的某一个给定点上时钟周期发生暂时性变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是一个平均值为0的平均变量。    1.3 Xilinx中与全局时钟资源和 DLL相关的硬件原语     IBUFG,IBUFGDS,BUFG

getInitialProps does not work when the page reload

不羁岁月 提交于 2021-01-03 06:20:19
问题 I'm using getInitialProps in the _app.js component, but when I reload the page, the request does not execute. For example: // getData.js import * as axios from 'axios'; export default async function getData() { const response = await axios.get('http://someapi.com/'); return response.data; } And then I'm going to use that data... // _app.js import getData from './getData'; import App, { Container } from "next/app"; class MyApp extends App { static async getInitialProps() { const response =

getInitialProps does not work when the page reload

断了今生、忘了曾经 提交于 2021-01-03 06:14:25
问题 I'm using getInitialProps in the _app.js component, but when I reload the page, the request does not execute. For example: // getData.js import * as axios from 'axios'; export default async function getData() { const response = await axios.get('http://someapi.com/'); return response.data; } And then I'm going to use that data... // _app.js import getData from './getData'; import App, { Container } from "next/app"; class MyApp extends App { static async getInitialProps() { const response =

Java并发之AQS详解

风格不统一 提交于 2021-01-02 22:47:39
一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。   以下是本文的目录大纲: 概述 框架 源码详解 简单应用   若有不正之处,请谅解和批评指正,不胜感激。   请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/waterystone/p/4920797.html 二、框架   它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里volatile是核心关键词,具体volatile的语义,在此不述。state的访问方式有三种: getState() setState() compareAndSetState()   AQS定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。  

pom文件报错org.apache.maven.archiver.mavenarchiver.getmanifest

社会主义新天地 提交于 2021-01-02 19:24:46
  eclipse导入新的maven项目时,pom.xml第一行报错: org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)   原因是你的maven的配置文件不是最新的,执行以下步骤:   1、help->Install New Software -> add -> https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST/   或者http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/    注意: 点击next前,将eclipse Install 窗口右下角的 "Contact all update sites during install to find required software"选项取消掉。   2、一直next confirm 安装更新,最后提示重启eclipse,重启后再右键项目maven

NX二次开发-UFUN遍历函数UF_OBJ_cycle_all

家住魔仙堡 提交于 2021-01-02 15:26:24
1 NX11+ VS2013 2 3 #include <uf.h> 4 #include <uf_obj.h> 5 #include <uf_modl.h> 6 #include <uf_part.h> 7 8 9 UF_initialize(); 10 11 // 方法1:UF_OBJ_cycle_objs_in_part 12 std::vector<tag_t> SolidVector; 13 tag_t ObjectTag = NULL_TAG; 14 int Type, SubType, Body_Type; 15 char msg[ 256 ]; 16 UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_solid_type, & ObjectTag); 17 while (ObjectTag != NULL_TAG) 18 { 19 UF_OBJ_ask_type_and_subtype(ObjectTag, &Type, & SubType); 20 if (SubType == UF_solid_body_subtype) 21 { 22 UF_MODL_ask_body_type(ObjectTag, & Body_Type); 23 if (Body_Type == UF_MODL_SOLID