From 735fde20b155c3274e67b2e2d7358868a3cc04d6 Mon Sep 17 00:00:00 2001 From: Rafael Darque Date: Sun, 8 Oct 2023 20:55:41 +0100 Subject: [PATCH] Update --- "Bases de Dados/Mat\303\251ria.html" | 289 ++++++++++ Bases de Dados/SQL.html | 36 +- C Language/Apontadores.html | 6 +- C Language/Ciclos.html | 6 +- C Language/Files.html | 6 +- C Language/Functions.html | 6 +- C Language/Info.html | 6 +- C Language/Language.html | 6 +- C Language/Libraries.html | 6 +- C Language/Matrix.html | 6 +- C Language/Pre-Processador.html | 154 ++++++ C Language/Structs.html | 8 +- Canvas/tabelas.svg | 18 + JAVA/Aula.html | 127 +---- JAVA/Info.html | 566 +++++++++++++++----- JAVA/Linguagem JAVA.html | 661 +++++++++++------------ Redes/Aula.html | 40 ++ Redes/Equipamento.html | 6 +- Redes/Materia.html | 772 +++++++++++++++++++++++++++ Redes/Perguntas.html | 13 +- Redes/Siglas.html | 16 +- Redes/forms.html | 6 +- index.html | 6 +- 23 files changed, 2107 insertions(+), 659 deletions(-) create mode 100644 "Bases de Dados/Mat\303\251ria.html" create mode 100644 C Language/Pre-Processador.html create mode 100644 Canvas/tabelas.svg create mode 100644 Redes/Aula.html create mode 100644 Redes/Materia.html diff --git "a/Bases de Dados/Mat\303\251ria.html" "b/Bases de Dados/Mat\303\251ria.html" new file mode 100644 index 0000000..476b018 --- /dev/null +++ "b/Bases de Dados/Mat\303\251ria.html" @@ -0,0 +1,289 @@ + + + + Matéria + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Ficheiros
...

Ficheiros e extensões
+

Ficheiros e pastas -> estruturas dentro da formatação dos discos

+
    +
  • Ficheiros -> guardam informação - ex: ficheiro.exe
  • +
  • Pastas -> guardam ficheiros
  • +
  • Extensões -> o tipo de ficheiro - ex: .jpg, .docx, .pptx, .zip, .txt, .html, .rtf
  • +
+
Ficheiro de base de dados
+
    +
  • Uma base de dados é um ficheiro
  • +
  • Tem que estar num disco para ser alojada
  • +
  • Existem vários formatos de bases de dados
  • +
+
Cada extensão de um ficheiro corresponde à formatação que está lá dentro - como se fosse um protocolo
+

Um ficheiro base de dados também tem regras - se não forem respeitadas, o ficheiro não abre

+

Regras
...

Regras de base de dados
+
    +
  • Tanto a ordem dos campos como dos registos não interessa
  • +
  • Haver um campo com o nome da tabela (no singular) +
      +
    • Ex: Tabela Contactos tem um campo chamado contacto
    • +
    +
  • +
  • O nome dos campos deve ser no singular
  • +
  • Nunca mexer / alterar nos cabeçalhos
  • +
+
A base de dados não é para vermos, é para o computador ver!
Regras aconselhadas para manter compatibilidade:
+

-> Não colocar pontuação nem acentos
+-> Não usar espaços
+-> Usar letras maiúsculas

+

center

+

Constituição
...

Constituição da base de dados
+
    +
  • Tabela -> é identificada por um nome (no plural)
  • +
  • Campos -> é nome dos campos/colunas
  • +
  • Registos -> são os valores/informação que cada campo tem
  • +
+

center

Chave primária
...
Campo ID - Identificador
+

É a chave primária

+
    +
  • Permite trabalhar com tabelas dentro de bases de dados
  • +
  • Uma maneira para distinguir registos
  • +
+
Características
+
    +
  • Não se repete
  • +
  • Faz com que haja diferenciação entre os registos
  • +
  • Identifica inequivocamente um registo, mesmo que sejam iguais
  • +
+
+
Incrementação Automática
+

A chave primária quando definida com incrementação automática, tem que ser número inteiro

+
+
Repetição
...
Cada campo adicionado são bytes a mais. Isso é significativo depois de muitos registos a mais.
+

Por exemplo: num supermercado, uma tabela de produtos não necessita do campo ID, sendo que o codigo de barras é unico para cada produto. Este codigo de barras poderia passar a ser a chave primária, no entanto não poderá ser de auto incrementação.

+
Elementos e espaço
+

1 elemento -> 1 byte a mais
+10 elementos -> 2 bytes a mais
+100 elementos -> 3 bytes a mais
+(...)

+
+
Registos repetidos
+

-> Registos repetidos: Ocupa espaço desnecessário
+-> Registos repetidos menos 1 campo: É possível mas torna-se difícil para diferenciar.

+
Redundância
...
A base de dados não deve ter redundância
+

Quando começa a aparece informação redundante, é necessário fazer uma tabela auxiliar

+
Quanto mais específicos nós formos, melhor!
+

Quantos mais campos, mais específicos somos.

+

Alojamento
...

Existem dois tipos de bases de dados: Local e Online
Base de dados Local
+
Pontos negativos:
+

-> Está no nosso pc / pen / disco / drive e só pode ser acedida por uma pessoa de cada vez
+-> É limitada
+-> Só pode alterar uma pessoa de cada vez pois está apenas num local

+
+
Positivo:
+

-> No caso em que uma só pessoa trabalha com ela, é uma boa solução.
+-> São utilizáveis
+-> Está sobre o nosso controlo

+
+
Base de dados Online
+
Pontos negativos:
+

-> Está fora do nosso controlo

+
+
Pontos positivos:
+

-> É possível ser acedida por várias pessoas em simultâneo

+
+
Ao criar uma base de dados online
+

Foi criado um ficheiro base de dados num computador remoto

+

Vantagens
...

Vantagens das Bases de dados:
+

-> Rápida
+-> Segura
+-> Permite organizar
+-> Permite inserir
+-> Permite consultar
+-> Permite editar
+-> Permite eliminar

+

SQL - Structured Query Language
...

A funcionalidade mais importante da base da dados:
+

Linguagem SQL
+-> É um ponto em comum entre todas as bases de dados

+
SQL -> Structed Query Language
+

É uma linguagem à base de queries.
+Permite fazer consultas na base de dados de forma muito eficiente e rápida.

+

SGBD
...

SGBD -> Sistema de Gestão de Base de Dados
É um software para a gestão de base de dados
+

-> Exemplos: MySQL, SQL Server, PostgreSQL, MongoDB, Oracle, Microsoft Access, MariaDB
+-> Todas as SGBD tem um engine por baixo, por isso é que são todas semelhantes. No entanto, têm diferentes variantes.

+
No caso de uma SGBD online:
+
    +
  • Endereço web
  • +
  • Base de dados disponibilizada por esse servidor/alojamento +
      +
    • A base de dados está alojada num servidor
    • +
    +
  • +
  • Exemplo de uma SGBD grátis online: phpMyAdmin
  • +
+

Microsoft Access
...

Microsoft Access
+

Extensão -> .accdb
+Extensão mais antigas -> .mdb
+O access é um BD local. Dá para por online mas não tem performance.

+
É aconselhado
+

Assim que abrir um ficheiro Access, abrir a janela de relações para ter uma percepção geral da base de dados

+
Criar relação entre duas tabelas
+
    +
  • Criar pelo menos 2 tabelas +
      +
    • CONTATOS e CIDADES
    • +
    +
  • +
  • Criar um campo com a nomeação de ID da outra tabela +
      +
    • ID_CIDADE
    • +
    +
  • +
  • Database tools -> arrastar o ID da tabela original, para o ID da segunda tabela
  • +
+

center

+
Vista de relações
+

Editar a vista de relações tendo em conta que poderá ser impressa:

+
    +
  • Deverá estar organizada
  • +
  • Tentar não passar linhas de relações por cima/baixo de outras tabelas
  • +
  • Redimensionar as tabelas ao conteúdo
  • +
+
Para alterar os valores monetários de $ -> €
+
    +
  • Vista estrutura -> selecionar campo e alterar na aba que abre no fundo
  • +
+
Formulários
+

Servem para interagir com as tabelas.

+
Criação de formulário com assistente
+
    +
  • selecionar tabela
  • +
  • criar
  • +
  • assistente
  • +
  • colocar nos Campos selecionados os que irão aparecer ao cliente
  • +
  • Nome do formulário: Gerir [nome da tabela]
  • +
  • Gravar formulário
  • +
+
Criação de formulário
+

(A PREENCHER)

+
Para editar o formulário
+
    +
  • Selecionar formulário
  • +
  • Entrar na vista de estrutura
  • +
+
Inserir butões formulários
+

(A INSERIR)

+
Caixa de combinação
+

-> Mostra o valor ao utilizador
+-> Guarda o ID na base de dados

+
Consultas
+
    +
  • Estrutura de consultas
  • +
  • Vista de estrutura
  • +
  • Tabelas disponiveis à direita
  • +
  • Em baixo está o que podemos consultas
  • +
+
Para consultar a informação de uma tabela
+
    +
  • arrastar essa tabela do lado direito para o centro
  • +
  • pegar no campo e arrastar para baixo
  • +
  • Está por pre definição o botão selecionar, na aba estrutura da consulta
  • +
  • Executar
  • +
  • Se quiser adicionar mais campos, arrastar do centro para baixo novamente
  • +
+
+
Para consultar uma tabela com outra ligação
+
    +
  • Arrastar a tabela para o centro
  • +
  • Arrastar a tabela ligada para o centro
  • +
  • Executar
  • +
  • Aparece a tabela com os respetivos valores
  • +
+
+
Serviço de base de dados gratuito
+
    +
  • Tem espaço de armazenamento
  • +
  • Base de dados
  • +
  • Linguagens dinâmicas
  • +
+

Exemplo de um serviço de BD gratuito: 000webhost

+

phpMyAdmin
...

Exportar base de dados no phpMyAdmin
+

Pasted image 20231002103117.png

+
Info
+
    +
  • Exportação em PDF serve principalmente para ver o "design" da nossa tabela (bom para entrega da base de dados à pessoa que a pediu)
  • +
  • Depois de exportar é possível abrir com bloco de notas
  • +
+
+
Exportar uma tabela no phpMyAdmin, cria um documento que tem todos os registos da base de dados. Não se pode fazer pois tem toda a informação que não pode estar visível ao "publico"
+

000webhost
...

Para importar:
+
    +
  • Entrar na base de dados vazia
  • +
  • Clicar importar
  • +
  • Vai importar todas as tabelas
  • +
+
Conteudo do site:
+
    +
  • File manager no 000webhost
  • +
  • Tudo o que está em public_html fica disponivel na web
  • +
  • index.html -> edit -> editor html
    +ou
  • +
  • index.php -> para fazer um ficheiro dinâmico
  • +
+
Ir ao website:
+
    +
  • Entrar no 000webhost
  • +
  • Clicar no site do lado esquerdo
  • +
+

Questões
...

O que é uma base de dados?
+

É um ficheiro! É um ficheiro que está num disco, e lá dentro do ficheiro está uma estrutura que se chama tabela.

+
É possivel copiar uma base de dados e por numa pen? Enviar por email?
+

Sim, é um ficheiro.

+
Se tiver um sistema informático instalado com um disco rígido fat 32 qual é o tamanho máximo de uma base de dados?
+

4GB - 4.294.967.295 bytes

+
Há alguma hipótese da minha base de dados ficar a ocupar mais?
+

Formatar o disco para mudar o sistema de ficheiros para NTFS.
+O tamanho máximo teórico possível no caso de NTFS é de 16 Hexabytes.

+
Qual o máximo para um anexo por email?
+

25MB

+
Porque é que não guardo os dados noutro formato? Por ex: word, excel...
+

A principal vantagem que me traz a base dados é dar para pôr lá coisas e depois procurar e encontrar. A informação irá ser consultada várias vezes.
+-> A informação é inserida uma vez (corretamente) e a base de dados dá maneira de eu a consultar, de forma rápida e segura.
+-> A estrutura que a base de dados tem, permite que seja muito mais rápida que todos os outros formatos.

+
Desafio: Fazer uma base de dados para alguém que vai à alemanha comprar um carro, abastace o carro, dorme e come, viaja de novo para Portugal, pinta e lava o carro, legaliza, inspeção, e vende o carro.
+

center

+
Quantas tabelas tem esta base de dados?
+

A base de dados tem 12 tabelas. Devem ser contadas na lista do lado esquerdo e não na vista de relações, pois poderão não estar todas as tabelas visíveis nesta vista.

+

center

+
\ No newline at end of file diff --git a/Bases de Dados/SQL.html b/Bases de Dados/SQL.html index 4a8d446..3423458 100644 --- a/Bases de Dados/SQL.html +++ b/Bases de Dados/SQL.html @@ -11,7 +11,7 @@ - + @@ -37,4 +37,36 @@ -
\ No newline at end of file +
KEYWORDS
...
SELECT
SELECT CAMPO
+
SELECT CAMPO1, CAMPO2
+
SELECT *
+

FROM
FROM TABELA
+
SELECT CAMPO
+FROM TABELA
+

WHERE
WHERE CAMPO='BLABLA'
+
WHERE CAMPO > 123
+
WHERE CAMPO LIKE 'a*' -- LIKE explicado abaixo
+

LIKE
LIKE '*a' -- os que acabam em a
+LIKE 'a*' -- os que começam em a
+

AS
AS NOME_NOVO_DO_CAMPO 
+

ORDER BY
ORDER BY CAMPO DESC
+ORDER BY CAMPO ASC
+

INSERT INTO
>INSERT INTO TABELA(CAMPO)
+>VALUES ('VALOR A ACRESCENTAR')
+

DELETE
DELETE FROM TABELA -- apaga todos os registos da tabela
+DELETE FROM TABELA WHERE CAMPO = 'VALOR'; -- apaga o registo com o valor
+

DROP
DROP TABLE TABELA -- apaga a tabela
+
COMANDOS
...
ASC - Ascendente
ORDER BY CAMPO ASC
+
DESC - Descendente
ORDER BY CAMPO DESC
+
FUNCÕES
...
SUM()
SELECT SUM(CAMPO_NUMERICO)
+AS NOME_NOVO_DO_CAMPO
+FROM TABELA
+
Exemplos
...
Query que mostre o número de telemóvel de um determinado cliente introduzindo o seu nome ou parte do seu nome de cada vez que a consulta é executada
SELECT CLIENTES.TELEFONE, CLIENTES.NOME  
+FROM CLIENTES  
+WHERE (((CLIENTES.NOME) Like "*" & [Insira o nome do cliente] & "*"));
+
Query que mostre os detalhes de um automóvel de um cliente, tendo em conta que a sua tabela de relação é a tabela Vendas.
SELECT CLIENTES.NOME AS NOME, CLIENTES.TELEFONE AS TELEFONE, VENDAS.DATA AS VENDA, MARCAS.NOME AS MARCA, MODELOS.NOME AS MODELO, CORES.NOME AS COR
+
+FROM ((((AUTOMOVEIS INNER JOIN VENDAS ON AUTOMOVEIS.ID_AUTOMOVEL = VENDAS.ID_AUTOMOVEL) INNER JOIN CLIENTES ON VENDAS.ID_CLIENTE = CLIENTES.ID_CLIENTE) INNER JOIN MARCAS ON AUTOMOVEIS.ID_MARCA = MARCAS.ID_MARCA) INNER JOIN MODELOS ON AUTOMOVEIS.ID_MODELO = MODELOS.ID_MODELO) INNER JOIN CORES ON AUTOMOVEIS.ID_COR = CORES.ID_COR
+
+WHERE CLIENTES.NOME LIKE "*" & [Insira o nome do cliente] & "*";
+
\ No newline at end of file diff --git a/C Language/Apontadores.html b/C Language/Apontadores.html index 308da8a..bee7e3a 100644 --- a/C Language/Apontadores.html +++ b/C Language/Apontadores.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
Info
+
Info

Um apontador é uma referência para um valor de um dado tipo.

Um apontador para uma variável contém o endereço que esta variável ocupa em memória.
* -> para ir buscar o valor.

Atenção
@@ -167,4 +167,4 @@ printf("a: %d\n", a); printf("b: %d\n", b); } -
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Ciclos.html b/C Language/Ciclos.html index 99bb37a..3468d30 100644 --- a/C Language/Ciclos.html +++ b/C Language/Ciclos.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
For
...
Exemplo -> Incrementar até ao 9
for(int i = 0; i < 10; i++){ 
+			
For
...
Exemplo -> Incrementar até ao 9
for(int i = 0; i < 10; i++){ 
 	printf("%d\n", i); 
 }
 
Exemplo -> Decrementar até ao 0
for(int i = 9; i >= 0; i--){ 
@@ -93,4 +93,4 @@
 	}
 	return(0);
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Files.html b/C Language/Files.html index 950254f..a45ebc3 100644 --- a/C Language/Files.html +++ b/C Language/Files.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -

A definição de ficheiro encontra-se na biblioteca stdio.h e denomina-se File.

O sistema operativo disponibiliza 3 tipos de acesso referidos como stdin, stdout, e stderr:
+

A definição de ficheiro encontra-se na biblioteca stdio.h e denomina-se File.

O sistema operativo disponibiliza 3 tipos de acesso referidos como stdin, stdout, e stderr:
-> O stdin é direcionado para o teclado
-> O stdout e stderr para o ecrã.

fopen
...
Atenção

Para se ler ou escrever num ficheiro é necessário que o ficheiro seja aberto inicialmente. Depois da operação, deve-se fechar o mesmo.

@@ -269,4 +269,4 @@
SEEK_SET
...
Example
fseek(file, 2L, SEEK_SET); //---> ler a partir da posição 2
 
SEEK_CUR
...
Example
fseek(file, 2L, SEEK_CUR); //---> ler a partir da posição atual + 2
 
SEEK_END
...
Example
fseek(file, -33L, SEEK_END); //---> ler a partir da posição do fim para trás
-
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Functions.html b/C Language/Functions.html index 00bf26f..309c54a 100644 --- a/C Language/Functions.html +++ b/C Language/Functions.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -

Funções
...

Funções das Libraries
...
int main()
+			

Funções
...

Funções das Libraries
...
int main()
 void main() 
 
 printf() // para imprimir no ecrã 
@@ -75,4 +75,4 @@
 
 printf("A soma: %d", funcao(a, b));
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Info.html b/C Language/Info.html index 23c4915..8b59d68 100644 --- a/C Language/Info.html +++ b/C Language/Info.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -

C++ -> Não tem string, tem vetores de caracteres

1 char tem -> 256 (de 0 a 255)

1 byte -> 8 bits 

1bit = 0 e 1

Signed (números positivos ou negativos):  

+

C++ -> Não tem string, tem vetores de caracteres

1 char tem -> 256 (de 0 a 255)

1 byte -> 8 bits 

1bit = 0 e 1

Signed (números positivos ou negativos):  

@@ -58,4 +58,4 @@
Tipo
-

Unsigned (números positivos): É a soma dos dois +1 (o 0 também conta)

\ No newline at end of file +

Unsigned (números positivos): É a soma dos dois +1 (o 0 também conta)

\ No newline at end of file diff --git a/C Language/Language.html b/C Language/Language.html index a96d292..02e7371 100644 --- a/C Language/Language.html +++ b/C Language/Language.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
Caracteres de formatação
...

%f -> float 
+

Caracteres de formatação
...

%f -> float 
%lf -> double 
%c -> caractere 
%d -> inteiro 
@@ -150,4 +150,4 @@


Strings
...

char v[] = "Nome"; 
 char v1[10]; //Tem 10 caracteres. 
-
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Libraries.html b/C Language/Libraries.html index ece1afd..7a75ade 100644 --- a/C Language/Libraries.html +++ b/C Language/Libraries.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -

stdio.h
...

#include<stdio.h>
+			

stdio.h
...

#include<stdio.h>
 int 
 char 
 printf() // para imprimir no ecrã 
@@ -65,4 +65,4 @@
 

time.h + stdlib.h
...

srand(time(NULL)); // a SEED é baseada no relogio do user 
 rand()%n; // n definido pelo user. Numeros gerados entre 0 e n-1 
 1 + rand()%n; // numeros gerados entre 1 e n-1.
-
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Matrix.html b/C Language/Matrix.html index 1f7a67f..14dc963 100644 --- a/C Language/Matrix.html +++ b/C Language/Matrix.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
Info
+
Info

Conjunto de células com coordenadas
Usam-se normalmente 2 ciclos for (1 para as linhas e outro para as colunas).

Pasted image 20230719093554.png

Example
//Declarar uma matriz 4x5
@@ -78,4 +78,4 @@
 	//printf("\n\n");
 	}
 }
-
\ No newline at end of file +
\ No newline at end of file diff --git a/C Language/Pre-Processador.html b/C Language/Pre-Processador.html new file mode 100644 index 0000000..c2a597d --- /dev/null +++ b/C Language/Pre-Processador.html @@ -0,0 +1,154 @@ + + + + Pre-Processador + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Info
+

O pré-processador em c é um programa que ocorre antes do compilador e modifica o ficheiro que vai ser compilado.

+
Diretivas do pré-processador
...
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeDiretivas
Processamento de macro instruções#DEFINE, #UNDEF
Inclusão de ficheiros com código fonte#INCLUDE
Compilação condicional#IFDEF, #IFNDEF, #IF, #ENDIF, #ELSE, #ELIF
Controlo de erros#LINE, #ERROR
Controlo do compilador#PRAGMA
+

Compilação condicional
...

#DEFINE
...
Info
+

Permite definir constantes.
+#DEFINE identificador substituição
+Esta diretiva substitui todas as ocorrências do identificador por substituição.
+A substituição pode ser uma expressão, uma instrução, um bloco de código ou nada.

+

#define DEBUG -> Passa a haver a palavra DEBUG na lista do pré-compilador
+#define MAX 100 -> Constante MAX com o valor 100
+#define maximo(a,b) (a>b?a:b) -> aceita 2 parâmetros (a,b) e devolve o maior,
+#define minuscula(c) = 'A' && c<='Z'? (c)+('a'-'A'):C) -> devolve uma minúscula se for maiúscula

Example
#include<stdio.h>
+#define AVISA(EXP)\
+
+if(EXP){\
+	fprintf(stderr, "Atenção: " #EXP "\n");
+}
+
+int main(){
+	int x=0;
+	AVISA(x==0);
+}
+
Example 2
#include<stdio.h>
+#define AVISA(EXP) if(EXP) fprintf(stderr, "Atenção: " #EXP "\n");
+
+int main(){
+	int x=0;
+	AVISA(x==0);
+}
+
#UNDEF
...
Info
+

Permite retirar a definição da constante.

+
Example
#include<stdio.h>
+#define MAX 100
+
+int tabela1[MAX];
+
+#undef MAX // Retirar a definição que demos ao valor max
+#define MAX 200 // Definir de novo mas com outro valor
+
+int tabela2[MAX];
+
Note
+

Este exemplo é o mesmo que ter int tabela[100] e depois int tabela[200].

+
#ifdef
...
Info
+

Se estiver definido

+
Example
#idef MAX
+int tabela[MAX]
+#endif
+
#ifndef
...
Info
+

Se não estiver definido (negação da definição)

+
Example
#ifndef MAX
+#deftime MAX 100
+#endif
+int tabela[MAX]
+
#if, #else e #elif
...
Example
#if MAX>200             // if(max>200)
+#undef MAX              // max = 200
+#define MAX 200
+
+#elif MAX<50            // else if(max<50)
+#undef MAX              // max = 50
+#define MAX 50
+
+#else                   // else
+#undef MAX              // max = 100
+#define MAX 100
+#endif
+
+int tabela[MAX];
+
defined e !defined
...
Example
#if !defined MAX
+#define MAX 100
+#elif defined TAMANHO
+#define MAX TAMANHO
+int tabela[MAX];
+#endif
+

Controlo de erros
...

#line
...
Info
+

Permite controlar o nome do ficheiro como o numero da linha onde ocorreu o erro.
+#incline nome_ficheiro(opcional)

+
Example
#line 45 "atribuição"
+int x?;
+

Produz um erro de compilação que é reportado com a mensagem: "atribuição", line 45

#error
...
Info
+

Aborta a compilação do programa e produz uma mensagem que pode ser especificada com parâmetro da diretiva.

+
Example
#ifdef DEBUG
+#error A constante DEBUG esta definida
+#endif
+

Controlo do compilador
...

#Pragma
...
Info
+

Serve para especificar opções para o compilador. Estas opções são dependentes do compilador usado e da linguagem utilizada. Se o argumento utilizado não for reconhecido, vai ser simplesmente ignorado.

+
\ No newline at end of file diff --git a/C Language/Structs.html b/C Language/Structs.html index e798569..f844396 100644 --- a/C Language/Structs.html +++ b/C Language/Structs.html @@ -11,7 +11,7 @@ - + @@ -37,9 +37,7 @@ -
-

É um tipo de dados agregados definidos pelo programador, e pode conter diversos elementos de dados de diferentes tipos. Numa estrutura vários tipos de dados coexistem em simultâneo.

-
struct[nome]{
+			

É um tipo de dados agregados definidos pelo programador, e pode conter diversos elementos de dados de diferentes tipos. Numa estrutura vários tipos de dados coexistem em simultâneo.

struct[nome]{
     tipo variável;
     tipo variável;
 }[lista de variáveis]; //o que está entre "[]" é opcional
@@ -190,4 +188,4 @@
     printf("\n\n");
 }
 
-
\ No newline at end of file +
\ No newline at end of file diff --git a/Canvas/tabelas.svg b/Canvas/tabelas.svg new file mode 100644 index 0000000..ea20658 --- /dev/null +++ b/Canvas/tabelas.svg @@ -0,0 +1,18 @@ +
TABELA
id_contato1234nomeJoãoNunoMariaAnacontato911111111933333333922222222966666666
CAMPOS
REGISTOS
\ No newline at end of file diff --git a/JAVA/Aula.html b/JAVA/Aula.html index 834c428..19e1ef3 100644 --- a/JAVA/Aula.html +++ b/JAVA/Aula.html @@ -11,7 +11,7 @@ - + @@ -37,126 +37,5 @@ -

Objeto
...

Objetos são elementos do mundo real que abstraímos no mundo virtual para que possamos manipulá-los na resolução de problemas.
Os objetos têm estados e comportamentos, que na programação estruturada correspondem aos dados e subprogramas e, na programação orientada a objetos (POO) são equivalentes aos atributos e métodos.

Exemplos de objetos:

- - - - - - - - - - - - - - - - - - - - - - - - -
ObjetoAtributosMétodos
pessoanome, idade, generofalar, andar
carromatricula, marcaacelerar, travar, buzinar
cãonome, raçalatir, correr
-

Atríbutos -> são as características -> são as variáveis dos objetos
-Métodos -> ações do objeto -> são as funções, no Java chamam-se métodos

Todos os objetos são oriundos de classes, ou seja, são instâncias das classes.

Classe
...

Uma classe é uma especificação de determinado objeto.
Para que um objeto seja de determinada classe, terá, obrigatoriamente que respeitar as especificações da classe!

Exemplo de instâncias da classe Pessoa:

- - - - - - - - - - - - - - - - - - - - - - - - -
Classe "Pessoa"Objeto "Pessoa1"Objeto "Pessoa2"
Atributo "nome"MariaJoão
Atributo "idade"1525
Atributo "genero"FM
-

Diz-se que "Pessoa1" e "Pessoa2" são instâncias da classe "Pessoa" porque respeitam as especificações desta classe, ou seja, obedecem aos estados (atributos) e compartimentos (métodos) desta.

Cada objeto, isto é, cada instância da classe "Pessoa" terá um valor diferente para cada um dos atributos definidos na especificação da classe.

Código exemplo da classe Pessoa:

class Pessoa{
-	//Atributos
-	String nome;
-	int idade;
-	char genero;
-}
-

Código exemplo dos métodos da classe Pessoa:

class Pessoa{
-	//Métodos
-	void falar(){
-		System.out.println("Blá, blá, blá");
-		}
-	}
-}
-

Construtor
...

Um construtor não é um método, mas sim um bloco de código que é escutado sempre que utilizamos a palavra reservada new. A sua única função é criar uma instância da classe (objeto).
-Quando o construtor não é explicitamente declarado, o compilador insere um construtor default, isto é, sem parâmetros e com o corpo vazio.

Exemplo:

class Pessoa{
-	//Construtores
-	public Pessoa(){ //Construtor default
-	}
-	public Pessoa(String nome, int idade, char genero){
-		this.nome = nome;
-		this.idade = idade;
-		this.genero = genero;
-	}
-}
-
O construtor deve ter o mesmo nome da sua classe.

Cada instância da classe (objeto) ocupa um lugar diferente na memória.

Exemplo de instâncias:

class UsaPessoa(){
-	public stativ void main(String[] args){
-		//Duas instâncias da classe Pessoa. 
-		Pessoa pessoa1 = new Pessoa("Maria", 15);
-		Pessoa pessoa2 = new Pessoa("Joao", 25);
-	}
-}
-

Encapsulamento
...

Refere-se ao isolamento entre partes do programa com o objetivo de controlar o tipo de acesso às classes, atributos e métodos.
Usam-se os seguintes modificadores de acesso:
-
    -
  • public: as classes, atributos e métodos são visíveis a partir de qualquer classe.
  • -
  • package: as classes, atributos e métodos são visíveis em classes do mesmo pacote da classe onde foram definidas, mas não nas suas subclasses.
  • -
  • protected: as classes, atributos e métodos são visíveis na classe onde foram definidos e as suas subclasses, independentemente do pacote onde estas últimas se encontram.
  • -
  • private: as classes, atributos e métodos são visíveis apenas dentro da mesma classe.
  • -
-

Getters e Setters
...

São utilizados para aceder aos atributos a partir de outras classes.
-

Os getter e os setter são responsáveis por fornecer meios para aceder ao estado de um objeto, isto é, obter e modificar os valores dos atributos de um objeto.

-
Get
-

Método que retorna/obtém o valor do atributo e é na maioria dos casos composto pela palavra get[nomedoatributo].
-Ir buscar o valor do atributo às nossas classes
-Ex: getIdade()
-Quando o método retorna um valor do tipo booleano, por convenção passa a usar-se a palavra is[nomedoatributo].

-
Set
-

Método que atribui/modifica o valor do atributo e é sempre composto pela palavra set[nomedoatributo].
-Colocar valores dentro dos atributos
-Ex: setIdade(int idade);

-

Herança
...

Propriedade que permite que determinadas classes herdem as características das classes superiores.
-

Ex:

-
carro
citadino
familiar
SUV
A classe carro é uma superclasse que possui os atributos e métodos comuns a todos os objetos carro. Cada uma das sub classes possuem atributos e métodos específicos de cada uma delas.
Exemplo superclasse "Carro"
...
Atributos
private String matricula;
-private int velocidadeAtual;
-
Métodos
public void ligar()
-public void acelerar()
-public void travar()
-public void buzinar()
-public void desligar()
-
Exemplo subclass "Citadino"
...
Métodos
public void ligarACManual()
-
Exemplo subclass "Familiar"
...
Métodos
public void desligarAirbagPassageiro()
-
Para que as subclasses citadino, familiar, e SUV herdem as características da superclasse "Carro" é preciso usar a palavra reservada extends.

Exemplo:

public class Citadino extends Carro
-public class Familiar extends Carro
-public class SUV extends Carro
-
As subclasses e instâncias de citadino, familiar, e SUV podem, por exemplo usar o método acelerar embora este esteja definido na superclasse Carro.

Exemplo:

public class UsaCitadino{
-	public static void main(String[] args){
-		Citadino citadino = new Citadino();
-		citadinoAcelerar();
-	}
-}
-
\ No newline at end of file +

Novo Documento 8
+ex 17

\ No newline at end of file diff --git a/JAVA/Info.html b/JAVA/Info.html index 9aa1955..3fd5d17 100644 --- a/JAVA/Info.html +++ b/JAVA/Info.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -

OOP - Object-Oriented Programming
...

POO - Programação Orientada a Objetos
É uma metodologia / paradigma para desenhar um programa com recurso ao uso de classes e objetos.
+

OOP - Object-Oriented Programming
...

POO - Programação Orientada a Objetos
É uma metodologia / paradigma para desenhar um programa com recurso ao uso de classes e objetos.

Simplifica o desenvolvimento de software e a manutenção, providenciando os seguintes conceitos:

  • Objeto
  • @@ -55,109 +55,244 @@
  • Agregação
  • Composição
-

center

Objetos
...
Objetos são um conjunto de dados mais um conjunto de procedimentos que representam a estrutura e o comportamento inerentes às entidades, concretas ou abstratas, do mundo real.
Podem ser definidos como uma instância de uma classe
Classe
...
Uma classe pode ser vista como uma planta/delineação de onde se pode criar um objeto individual.
Uma classe é uma coleção de objetos. É uma entidade lógica.
Uma classe é uma descrição dos atributos e dos métodos de um determinado tipo de objeto.
Herança
...
Quando um objeto herda todas as propriedades e comportamentos de um objeto pai.
Providencia a reutilização de código e é usado para obter polimorfismo em execução.
Polimorfismo
...
Quando uma tarefa é executada de formas diferentes.
Em Java é utilizado o método overloading e o método overriding para obter o polimorfismo.
Por exemplo, falar algo: o gato fala "meow", o cão ladra "woof", o pato fala "quack", etc,.
+

center

Objetos
...
Objetos são elementos do mundo real que abstraímos no mundo virtual para que possamos manipulá-los na resolução de problemas.
Os objetos têm estados e comportamentos
+

Que na programação orientada a objetos (POO) são equivalentes aos atributos e métodos.

+
Atributos
+

São as características, definidas como variáveis do objeto.

+
+
Métodos
+

São as ações, definidas como métodos* do objeto.

+
+
Exemplos de objetos
+

__

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ObjetoAtributosMétodos
pessoanome, idade, generofalar, andar
carromatricula, marcaacelerar, travar, buzinar
cãonome, raçalatir, correr
+

__ +<font color="#a5a5a5"><sup>*</sup> Em linguagem C são conhecidas como funções.</font>

+
+
+
Todos os objetos são oriundos de classes
+

Ou seja, são instâncias das classes.

+
Instância
...
Instância -> é um objeto gerado por uma classe.
+
    +
  • A classe -> é a representação de um objeto
  • +
  • A instância -> é o objeto propriamente dito
  • +
+
O conteúdo de um objeto, o estado interno, é definido pelas suas variáveis de instância (atributos).
+

Dois objetos diferentes da mesma classe, podem possuir valores diferentes para os seus atributos e consequentemente apresentar estados internos diferentes.

+

center

Classe
...
Uma classe pode ser vista como o molde de onde se pode criar um objeto
+

Para que um objeto seja de uma determinada classe, terá obrigatoriamente que respeitar as especificações da classe.

+
Ou seja, Uma classe é uma descrição dos atributos e dos métodos de um determinado tipo de objeto
+
Exemplo de instâncias com uma classe Pessoa
+

__

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Classe PessoaObjeto Pessoa1Objeto Pessoa2
Atributo nomeMariaJoão
Atributo idade1525
Atributo generoFM
+

__

+
+
Informação
+
    +
  • Pessoa1 e Pessoa2 são instâncias da classe Pessoa porque respeitam as especificações desta classe
  • +
  • Ou seja, obedecem aos estados (atributos) e compartimentos (métodos)
  • +
+
+

Código exemplo da classe Pessoa

+
    +
  • +
    class Pessoa{
    +	//Atributos
    +	String nome;
    +	int idade;
    +	char genero;
    +}
    +
    +
  • +
+

Código exemplo dos métodos da classe Pessoa

+
    +
  • +
    class Pessoa{
    +	//Métodos
    +	void falar(){
    +		System.out.println("Blá, blá, blá");
    +	}
    +}
    +
    +
  • +
+
Construtor
...
Um construtor não é um método, mas sim um bloco de código que é escutado sempre que utilizamos a palavra reservada new
+

A sua única função é criar uma instância da classe, um objeto.

+
Quando o construtor não é explicitamente declarado, o compilador insere um construtor default, isto é, sem parâmetros e com o corpo vazio
+

Exemplo

+
class Pessoa{
+	//Construtores
+	public Pessoa(){ //Construtor default
+	}
+	public Pessoa(String nome, int idade, char genero){
+		this.nome = nome;
+		this.idade = idade;
+		this.genero = genero;
+	}
+}
+
+

O Construtor tem o mesmo nome da sua classe

+
Cada instância da classe (objeto) ocupa um lugar diferente na memória.
+

Exemplo de instâncias

+
class UsaPessoa(){
+	public stativ void main(String[] args){
+		//Duas instâncias da classe Pessoa. 
+		Pessoa pessoa1 = new Pessoa("Maria", 15);
+		Pessoa pessoa2 = new Pessoa("Joao", 25);
+	}
+}
+
+
Encapsulamento
...
Refere-se ao isolamento entre partes do programa
+

Com o objetivo de controlar o tipo de acesso às classes, atributos e métodos.

+
Usam-se os seguintes modificadores de acesso:
+
    +
  • public: as classes, atributos e métodos são visíveis a partir de qualquer classe.
  • +
  • package: as classes, atributos e métodos são visíveis em classes do mesmo pacote da classe onde foram definidas, mas não nas suas subclasses.
  • +
  • protected: as classes, atributos e métodos são visíveis na classe onde foram definidos e as suas subclasses, independentemente do pacote onde estas últimas se encontram.
  • +
  • private: as classes, atributos e métodos são visíveis apenas dentro da mesma classe.
  • +
+
+
Get e Set
...
São utilizados para aceder aos atributos a partir de outras classes.
+

Os getter e os setter são responsáveis por fornecer meios para aceder ao estado de um objeto, isto é, obter e modificar os valores dos atributos de um objeto.

+
Get
+

Método que vai buscar o valor do atributo às nossas classes

+
+
Ex: getIdade()
+
Quando o método vai buscar um valor do tipo booleano, por convenção passa a usar-se a palavra is.
+
Ex: isIdade()
+
Set
+

Método que coloca valores dentro do atributo

+
+
Ex: setIdade(int idade);
+
Herança
...
Quando um objeto herda todas as propriedades e comportamentos de um objeto pai
+

Possibilita a reutilização de código.

+
Exemplo
+
carro
citadino
familiar
SUV
+

-> A classe carro é uma superclasse
+-> carro possui os atributos e métodos comuns a todos os objetos carro
+-> Cada uma das sub classes possuem atributos e métodos específicos de cada uma delas

+

Exemplo da superclasse carro

+
Atributos
+
private String matricula;
+private int velocidadeAtual;
+
+
+
Métodos
+
public void ligar()
+public void acelerar()
+public void travar()
+public void buzinar()
+public void desligar()
+
+
+

Exemplo da subclasse citadino

+
Métodos
+
public void ligarACManual()
+
+
+

Exemplo da subclass familiar

+
Métodos
+
public void desligarAirbagPassageiro()
+
+
+

__

+
Para que as subclasses citadino, familiar, e SUV herdem as características da superclasse Carro é preciso usar a palavra reservada extends.
+
Exemplo:
+
public class UsaCitadino{
+	public static void main(String[] args){
+	Citadino citadino = new Citadino();
+	citadinoAcelerar();
+	}
+}
+
+
+
Polimorfismo
...
Quando uma tarefa é executada de formas diferentes.
+

Em Java é utilizado o método overloading e o método overriding para obter o polimorfismo.

+
Por exemplo, falar algo: o gato fala "meow", o cão ladra "woof", o pato fala "quack", etc,.

center

-
Abstração
...
Esconder os detalhes internos e mostrar as funcionalidades.
Por exemplo, uma chamada telefónica: não sabes como funciona o processamento interno.
Em Java, para obter abstração é necessário usar uma classe e interface abstratas.

Encapsulamento

Características da linguagem
...

Java é independente de plataforma, é uma linguagem baseada em software
-

É compilado por um compilador e convertido para bytecode. Este bytecode é um código independente de plataforma.
--> WORA - Write Once and Run Anywhere

-
É uma linguagem mais pesada e lenta
Java possui dois componentes:
+
+
Abstração
...
Esconder os detalhes internos e mostrar as funcionalidades
+
Por exemplo, uma chamada telefónica: não sabes como funciona o processamento interno.
+

Em Java, para obter abstração é necessário usar uma classe e interface abstratas.

+
Constante
...
Uma constante pode tanto ser definida como um atributo de classe como uma variável local.
+
Info
    -
  • Ambiente de tempo de execução
  • -
  • API (Interface de Programação de Aplicativos)
  • +
  • A atribuição do valor pode ser feita no momento da declaração ou posteriormente.
  • +
  • Depois de atribuído um valor não é permitido que outra atribuição seja efectuada.
  • +
  • Os nomes das constantes devem ser descritivos e escritos em maiúscula. Separar nomes internos com __
-
Programas Java são executados numa máquina virtual
Arquitetura neutra pois não há recursos dependentes da implementação. Exemplo:
-

Tipo dado INT em arquitetura C =/= Java

-

em C:
--> 32 bits -> 2 bytes de memória
--> 64 bits -> 4 bytes de memória

-

em Java:
--> 32 bits -> 4 bytes de memória
--> 64 bits -> 4 bytes de memória

-
Java é uma linguagem interpretada - As instruções são executadas ao longo delas, não é criado um programa como na compilação.
Java não suporta structs
Java usa a palavra reservada import para incluir diferentes classes e métodos, não suporta cabeçalhos de arquivos.
É possível ter múltiplas classes num arquivo java
-

center

-

Parâmetros
...

class
-

Palavra reservada que é usada para declarar um classe em java.

-
public
-

Palavra reservada que é um modificador de acesso que representa visibilidade. Significa que é visível para todos.

-
static
-

É uma palavra reservada. Se nós declararmos algum método como static, é conhecido como método estático.

-
Vantagem
-

Não é necessário criar um objeto para invocar o método estático. Por isso, economiza memória.

-
void
-

É um tipo de retorno de método. Significa que não retorna nenhum valor.

-
main
-

Representa o ponto de início do programa.

-
String args[]
-

É usado para argumento de linha de comando.

-
System.out.println()
-

É usada imprimir declarações.
--> System é uma class
--> out é o objeto da classe PrintStream
--> print() é o método da classe PrintStream

-

Execução em CMD
...

Para correr a aplicação java no cmd
-

-> Ir para a localização onde se encontra o documento
--> javac nomedocumento.java para compiilar
--> java nomedocumento.java para executar

-

center

Com parâmetros
...
Aplicações Java permitem que se passe parâmetros através da linha de comando.
-

Os parâmetros são passados para as aplicações através do vetor de strings do método
-main.

-
Parâmetro lenght
-

Através do método length pode-se verificar o número de parâmetros passados. O acesso é feito indicando-se a posição no array, sempre iniciando em ( ).

-
public static void main(String[] args) {  
-        System.out.println("O meu nome é: " + args[0] + " e tenho " + args[1] + " anos.");
-        System.out.println("Numero de parametros: " + args.length);
-    }
-
java ClassName.java Nome idade
-

center

Compilação
...

center
-Simple.java -> Código fonte java
-Simple.class -> Código fonte em bytecode

Execução
...

Na execução são realizadas as seguintes etapas:

Pasted image 20230912144929.png

O mecanismo de execução contém:
-

-> Um processador virtual
--> Interpretador: Lé o fluxo do bytecode e executa as instruções
--> Compilador JIT (Just-in-time): Compila parte do código de bytes que possuem funcionalidade semelhante ao mesmo tempo, reduzindo a quantidade de tempo necessário para a compilação.

-

center

JVM, JRE e JDK
...

center

JVM
...
Java Virtual Machine
É uma máquina virtual
-

É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode pode ser executado.
-Isto porque não existe fisicamente.

-
Executa as seguintes tarefas principais:
-

-> Carrega código
--> Verifica código
--> Executa código
--> Fornece ambiente de tempo de execução

-
Fornece definições para:
-

-> Área de memória
--> Formato de arquivo de classe
--> Conjunto de registros
--> Pilha de garbage collector
--> Relatório de erros fatais
--> Etc.

-

center

JRE
...
Java Runtime Environment
É um, conjunto de ferramentas de sofware usadas para o desenvolvimento de aplicações java
-

É usado para fornecer o ambiente de tempo de execução.
-É a implementação da JVM.
-Existe fisicamente.

-
JDK
...
Java Development Kit
É um ambiente de desenvolvimento de software
-

É usado para desenvolver aplicações e applets (pequenos programas) Java.
-Contém o JRE + ferramentas de desenvolvimento.
-Contém uma JVM privada e alguns outros recursos.
-Existe fisicamente.

-
Para além da JVM, contém os recursos:
-

-> Interpretador / Carregador (java)
--> Compilador (javac)
--> Arquivador (jar)
--> Gerador de documentação (Javadoc)
--> etc

-

center

Variáveis
...

É um recipiente que armazena um valor enquanto o programa Java é executado.
Existem 3 tipos de variáveis
-

-> Local
--> Global
--> Estática

-
Variável Local
...
É declarada dentro do método
-

-> Só se pode usar essa variável dentro do método
+

Syntax
final tipo IDENTIFICADOR = valor;
+
Exemplo
final double MIN_WIDTH = 100.0;
+

Variáveis
...

É um recipiente que armazena um valor
+

enquanto o programa Java é executado.

+
Existem 3 tipos de variáveis
+

-> Local
+-> Global
+-> Estática

+
+
Variável local
+

-> É declarada e usada dentro do método
+-> Não pode ser definida como static

+
Variável global
+

-> É declarada dentro da classe, fora dos métodos
-> Não pode ser definida como static

-
Variável Global
...
É declarada dentro da classe, fora dos métodos
-

-> Não pode ser definida como static

-
Variável Estática
...
É uma variável estática
+
Variável estática

-> Não pode ser local
-> A alocação na memória acontece apenas uma vez, enquanto a classe é carregada em memória

-
Variável Primitiva
...
São os tipos de blocos de manipulação de dados. São os tipos de dados mais básicos disponíveis na linguagem Java.
Tipos de variáveis primitivas:
+
Variável Primitiva
...
São os tipos de blocos de manipulação de dados. São os tipos de dados mais básicos disponíveis na linguagem Java.
Tipos de variáveis primitivas:
+
@@ -173,86 +308,155 @@ - + - - + - + - + - - + + - - + + - + - + - +
Data Typefalse 1 bit true, falseBoolean one = falseBoolean one = false
char '\u0000' 2 byte 0 -> 65.535char letterA = 'A'``char letterA = 'A'
byte 01 byte1 byt -128 -> 127byte a = 10, byte b = -20byte a = 10, byte b = -20
short 0 2 byte-32.768 -> 32.767short s = 10000, short r = -5000-32.768 -> 32.7short s = 10000, short r = -5000
int 0 4 byte-2.(...).648 -> 2.(...).647int a = 100000, int b = -200000-2.(...).648 -> 2.(...).64int a = 100000, int b = -200000
long 0L 8 byte -9.(...).808 -> 9.(...).807long a = 100000L, long b = -200000Llong a = 100000L, long b = -200000L
float 0.0f 4 byte Ilimitadofloat f1 = 234.5ffloat f1 = 234.5f
double 0.0d 8 byte Ilimitadodouble d1 = 12.3double d1 = 12.3
-

center

Regras:
+
+

center

Regras:
  • Deve ser declarada antes de ser utilizada
  • Possui um tipo, um identificador e um alcance
  • São locais quando declaradas dentro de métodos
  • São atributos quando declaradas no corpo da classe
  • -
  • Podem ser inicializadas
  • -
-
(tipo) (identificador) = (valor);
+
  • Podem ser inicializadas +
    (tipo) (identificador) = (valor);

    Se não se colocar a privacidade antes do (tipo), por default a variável ficará public

    -
  • int n1 = 20;
    int n1 = 20, n2 = 30;
    Nome da variável
    +
    + + +
    Exemplo
    +
    int n1 = 20;
    +
    +
    int n1 = 20, n2 = 30;
    +
    +
    +
    Nome da variável
    • Deve começar com uma letra, underscore, ou um $
    • Os caracteres subsequentes podem incluir os dígitos de 0 a 9
    -

    Tipos de dados
    ...

    Existem 2 tipos de dados
    +

    Métodos
    ...

    Um método em Java é equivalente a uma função, subrotina ou procedimento em outras linguagens de programação.
    +

    Quando definimos um objeto num programa orientado a objetos, implementamos todo o comportamento desse objeto em um ou mais métodos.

    +
    Em Java não existe o conceito de métodos globais. Todos os métodos devem sempre ser definidos dentro de uma classe.
    +
    Syntax
    +

    [modificador] tipo_retorno identificador ([argumentos])

    +
    Exemplo
    +
    [modificador] tipo_retorno identificador ([argumentos]){
    +	//Corpo do método
    +	}
    +
    +
    Retornar um valor
    ...
    Para retornar valor, é necessário definir na frente do nome do método e o tipo do valor a ser retornado.
    +

    Pode ser:

    +
      +
    • primitivo
    • +
    • classe
    • +
    • interface
    • +
    +
    Se não é suposto o método retornar um valor, é obrigatória a utilização do tipo void.
    return é utilizado para passar o valor requerido de volta para quem chamou o método.
    +

    Quando este comando é encontrado, o método termina imediatamente a sua execução.

    +

    center

    Passar valor primitivo
    ...
    Primitivo
    +

    -> Quando é passado na chamada do método, uma cópia deste valor é criada e atribuída ao argumento do método. Se o método alterar este valor, só será afectada nesse método.
    +center

    +
    Passar referência de um objeto
    ...
    Referência de um objeto
    +

    -> Aqui, é passada uma referência ao objeto original, ao invés de uma cópia do objeto. Qualquer alteração, afetará o objeto original.
    +center

    +
    main
    ...
    O método main é um método especial pois representa o ponto de entrada para a execução de um programa em Java
    Syntax
    +
    public static void main(String[] args)
    +
    +
    Nem todas as classes terão um método main
    +

    Uma classe que não possui um método main não pode ser “executada” pois não representa um programa em Java. Ela será sim, utilizada como classe utilitária para a construção de outras classes ou mesmo de um programa.

    +

    Estrutura
    ...

    O desenvolvimento de aplicações Java sempre é feito através de classes. A definição de uma classe Java deve respeitar a seguinte sintaxe:
    <modificador de acesso> class <nome da classe> { 
    +	<Declaração das Variáveis de Instância (Atributos)> 
    +	<Declaração de Métodos> 
    +	
    +	public static void main( String args[] ){ 
    +		//corpo principal do programa
    +	} 
    +} 
    +

    Argumentos
    ...

    Um método pode ter zero ou mais argumentos (ou parâmetros)
    Info
    +

    -> Caso não tenha argumentos, é necessário colocar os parênteses vazios tanto na definição como na chamada do método.
    +-> Assinatura do método: o nome do método acrescido dos seus parâmetros.
    +-> Cada argumento deve ser declarado especificando o tipo e o nome.
    +-> Caso seja mais que um argumento, cada declaração deve estar separada por vírgula.

    +
    Exemplo
    +

    center

    +

    Parâmetros
    ...

    class
    +

    Palavra reservada que é usada para declarar um classe em java.

    +
    public
    +

    Palavra reservada que é um modificador de acesso que representa visibilidade. Significa que é visível para todos.

    +
    static
    +

    É uma palavra reservada. Se nós declararmos algum método como static, é conhecido como método estático.

    +
    Vantagem
    +

    Não é necessário criar um objeto para invocar o método estático. Por isso, economiza memória.

    +
    +
    void
    +

    É um tipo de retorno de método. Significa que não retorna nenhum valor.

    +
    main
    +

    Representa o ponto de início do programa.

    +
    String args[]
    +

    É usado para argumento de linha de comando.

    +
    System.out.println()
    +

    É usada imprimir declarações.
    +-> System é uma class
    +-> out é o objeto da classe PrintStream
    +-> print() é o método da classe PrintStream

    +

    Tipos de dados
    ...

    Existem 2 tipos de dados

    -> Primitivos
    -> Não primitivos

    -
    Primitivo
    ...
    Não primitivo
    ...

    Sistema Unicode
    ...

    Unicode é um padrão adotado mundialmente que possibilita com que todos os caracteres de todas as linguagens escritas utilizadas no planeta possam ser representados em computadores.
    -

    Unicode fornece um número único para cada caractere, não importa a plataforma, não importa o programa e não importa a linguagem.

    -

    Criar documentação
    ...

    Convenção de nomes
    ...

    Arquivos
    -

    O código fonte de programas Java é armazenado em arquivos com extensão .java
    --> ex: Cliente.java
    -Quando compilamos um arquivo fonte, será gerado um arquivo com extensão .class para cada classe definida e com o mesmo nome da classe. O arquivo .class contém o bytecode gerado com a compilação.
    --> ex: Cliente.class

    -
    Classes
    +

    Sistema Unicode
    ...

    Unicode é um padrão adotado mundialmente
    +

    Que possibilita com que todos os caracteres de todas as linguagens escritas utilizadas no planeta possam ser representados em computadores.

    + +

    Convenção de nomes
    ...

    Classes

    Utilize substantivos ou frases substantivas descritivas.
    Deixe maiúscula a primeira letra de cada substantivo que compõe o nome.
    -> ex: MyFirstClassName

    @@ -264,4 +468,116 @@

    Escolha nomes que indiquem o uso pretendido da variável.
    Utilize a primeira letra do nome minúscula e a inicial das outras palavras que formam o nome maiúscula
    -> ex: customerLastName

    -
    \ No newline at end of file +

    Modificadores de acesso
    ...

    Java controla o acesso a atributos e métodos através do uso dos modificadores de acesso. São eles:
    public
    +

    -> O menos restritivo

    +

    -> Atributos e métodos com este modificador, podem ser acedidos por:

    +
      +
    • métodos da própria classe
    • +
    • classes derivadas desta
    • +
    • qualquer outra classe em qualquer outro pacote
    • +
    +
    protected
    +

    -> Atributos e métodos com este modificador, podem ser acedidos por:

    +
      +
    • métodos da própria classe
    • +
    • classes derivadas
    • +
    +
    private
    +

    -> O mais restritivo

    +

    ->Atributos e métodos com este modificador, podem ser acedidos por:

    +
      +
    • métodos da própria classe
    • +
    +
    Quando não é definido
    +

    -> Atributos e métodos sem modificador, podem ser acedidos por:

    +
      +
    • métodos da própria classe
    • +
    • classes derivadas
    • +
    • qualquer outra classe dentro do mesmo pacote
    • +
    +

    Características da linguagem
    ...

    Java é independente de plataforma, é uma linguagem baseada em software
    +

    É compilado por um compilador e convertido para bytecode. Este bytecode é um código independente de plataforma.
    +-> WORA - Write Once and Run Anywhere

    +
    É uma linguagem mais pesada e lenta
    +
    Java possui dois componentes:
    +
      +
    • Ambiente de tempo de execução
    • +
    • API (Interface de Programação de Aplicativos)
    • +
    +
    Programas Java são executados numa máquina virtual
    Arquitetura neutra pois não há recursos dependentes da implementação. Exemplo:
    +

    Tipo dado INT em arquitetura C =/= Java

    +

    em C:
    +-> 32 bits -> 2 bytes de memória
    +-> 64 bits -> 4 bytes de memória

    +

    em Java:
    +-> 32 bits -> 4 bytes de memória
    +-> 64 bits -> 4 bytes de memória

    +
    Java é uma linguagem interpretada - As instruções são executadas ao longo delas, não é criado um programa como na compilação.
    Java não suporta structs
    Java usa a palavra reservada import para incluir diferentes classes e métodos, não suporta cabeçalhos de arquivos.
    É possível ter múltiplas classes num arquivo java
    +

    center

    +

    Execução em CMD
    ...

    Para correr a aplicação java no cmd
    +

    -> Ir para a localização onde se encontra o documento
    +-> javac nomedocumento.java para compiilar
    +-> java nomedocumento.java para executar

    +

    center

    Aplicações Java permitem que se passe parâmetros através da linha de comando.
    +

    Os parâmetros são passados para as aplicações através do vetor de strings do método main

    +
    Parâmetro lenght
    +

    Através do método length pode-se verificar o número de parâmetros passados. O acesso é feito indicando-se a posição no array, sempre iniciando em ( ).

    +
    Exemplo
    +
    public static void main(String[] args) {  
    +	System.out.println("O meu nome é: " + args[0] + " e tenho " + args[1] + " anos.");
    +	System.out.println("Numero de parametros: " + args.length);
    +}
    +
    +

    CMD:

    +
    java ClassName.java Nome idade
    +
    +

    center

    +

    JVM, JRE e JDK
    ...

    center

    JVM
    ...
    Java Virtual Machine
    É uma máquina virtual
    +

    É uma especificação que fornece um ambiente de tempo de execução no qual o bytecode pode ser executado.
    +Isto porque não existe fisicamente.

    +
    Executa as seguintes tarefas principais:
    +

    -> Carrega código
    +-> Verifica código
    +-> Executa código
    +-> Fornece ambiente de tempo de execução

    +
    Fornece definições para:
    +

    -> Área de memória
    +-> Formato de arquivo de classe
    +-> Conjunto de registros
    +-> Pilha de garbage collector
    +-> Relatório de erros fatais
    +-> Etc.

    +

    center

    JRE
    ...
    Java Runtime Environment
    É um, conjunto de ferramentas de sofware usadas para o desenvolvimento de aplicações java
    +

    É usado para fornecer o ambiente de tempo de execução.
    +É a implementação da JVM.
    +Existe fisicamente.

    +
    JDK
    ...
    Java Development Kit
    É um ambiente de desenvolvimento de software
    +

    É usado para desenvolver aplicações e applets (pequenos programas) Java.
    +Contém o JRE + ferramentas de desenvolvimento.
    +Contém uma JVM privada e alguns outros recursos.
    +Existe fisicamente.

    +
    Para além da JVM, contém os recursos:
    +

    -> Interpretador / Carregador (java)
    +-> Compilador (javac)
    +-> Arquivador (jar)
    +-> Gerador de documentação (Javadoc)
    +-> etc

    +

    center

    Compilação
    ...

    center

    Ficheiros
    +

    Simple.java -> Código fonte java
    +Simple.class -> Código fonte em bytecode

    +
    .java
    +

    O código fonte de programas Java é armazenado em arquivos com extensão .java
    +-> ex: Cliente.java

    +
    +
    .class
    +

    Quando compilamos um arquivo fonte, será gerado um arquivo com extensão .class para cada classe definida e com o mesmo nome da classe. O arquivo .class contém o bytecode gerado com a compilação.
    +-> ex: Cliente.class

    +
    +

    Execução
    ...

    Na execução são realizadas as seguintes etapas:
    +

    200 | center

    +
    O mecanismo de execução contém:
    +

    -> Um processador virtual
    +-> Interpretador: Lé o fluxo do bytecode e executa as instruções
    +-> Compilador JIT (Just-in-time): Compila parte do código de bytes que possuem funcionalidade semelhante ao mesmo tempo, reduzindo a quantidade de tempo necessário para a compilação.
    +center

    +
    \ No newline at end of file diff --git a/JAVA/Linguagem JAVA.html b/JAVA/Linguagem JAVA.html index a4e33ef..70397e7 100644 --- a/JAVA/Linguagem JAVA.html +++ b/JAVA/Linguagem JAVA.html @@ -11,7 +11,7 @@ - + @@ -37,14 +37,7 @@ -

    Variáveis
    ...

    1. class A {  
    -2.    int data = 50; //Variável global  
    -3.    static int m = 100; // Variável estática  
    -4.    void metodo() {  
    -5.       int n = 90; // Variável local  
    -6.    }  
    -7. } // Fim da classe
    -
    // Variáveis Primitivas
    +			

    Variáveis
    ...

    // Variáveis Primitivas
     
     boolean one = false;
     byte a = 10, byte b = -20;
    @@ -56,11 +49,124 @@
     char letterA = 'A';
     
     
    -

    center

    Números
    ...

    Tipo integer
    -

    byteshortint e long

    -
    Tipo floating
    -

    float e double

    -

    center

    35e3f -> 35 x 103

    Operadores
    ...

    É um símbolo que realiza uma operação
    +

    center

    Lista códigos unicode: Link
    *35e3f -> 35 x 103

    Keywords
    ...

    center

    Métodos
    ...

    Declarar / chamar um método
    +
    //método que calcula a soma
    +public static int somar(int numero1, int numero2) { 
    +	 int resultado = numero1 + numero2;
    +	return resultado;
    +}
    +public static void main(String[] args) {
    +	int numero1 = 5;
    +	int numero2 = 7;
    +	int resultadoSoma	= somar(numero1, numero2); //chamar o método
    +}
    +
    +
    String.valueOf()
    +

    Converte diferentes tipos para String.

    +
    Math.log10()**
    +

    Retorna o valor logarítmico de base 10 de um valor duplo.

    +
    main
    ...
    Syntax
    +
    public static void main(String[] args)
    +
    +
    Exemplo
    +
    public static void main(String[] args) {
    +		int numero1 = 5;
    +		int numero2 = 7;
    +	}
    +
    +
    Declarações válidas:
    1. public static void main(String[] args)    
    +2. public static void main(String []args)    
    +3. public static void main(String args[])    
    +4. public static void main(String... args)    
    +5. static public void main(String[] args)    
    +6. public static final void main(String[] args)    
    +7. final public static void main(String[] args)    
    +8. final strictfp public static void main(String[] args)
    +
    Declarações inválidas:
    1. public void main(String[] args)    
    +2. static void main(String[] args)    
    +3. public void static main(String[] args)    
    +4. abstract public static void main(String[] args)
    +
    printf
    ...
    
    +System.out.printf("%d", n);
    +
    +
    
    +System.out.printf("Idade: %d da Maria", n);
    +
    +
    println
    ...
    Print Line
    
    +System.out.println(n);
    +
    +
    
    +System.out.println("Idade: " +n+ "da Maria");
    +
    +
    format
    ...
    É mais seguro que o printf. Permite fazer as mesmas formatações.
    System.out.format("Preço do azeite: %.2f", precoAzeite);
    +

    Constante
    ...

    Syntax
    final tipo IDENTIFICADOR = valor;
    +
    Exemplo
    final double MIN_WIDTH = 100.0;
    +

    Caracteres literais
    ...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CharO que faz
    \nnova linha
    \""aspas duplas
    \"aspas simples
    \rreescreve por cima do anterior
    \bretrocesso do cursor de 1 char
    \u006Fvalores unicode
    \ttabulação
    +

    Objetos Pré-Definidos
    ...

    RANDOM
    import java.util.concurrent.ThreadLocalRandom;
    +
    +int numeroRandom = ThreadLocalRandom.current().nextInt(min, max + 1); 
    +
    +//O numero máximo é exclusivo, por isso tem que adicionar mais 1 para passar a ser inclusivo
    +

    For
    ...

    Print vetor
    for (int numero : vetor) {
    +	System.out.print(numero + " ");
    +}
    +

    Estrutura condicional
    ...

    Operador ternário
    ...
    variavel>=10?"blabla":"blabla"
    +

    Exemplo

    +
    System.out.println(nota>=10?"Parabens":"Marque novo exame");
    +
    +

    Estrutura
    ...

    Exemplo
    public class Exemplo1{ 
    +// public -> modificador
    +// Exemplo1 -> Nome da classe
    +
    +	String mensagem = "O meu primeiro programa!";
    +	// mensagem -> var da instancia
    +
    +	public void Imprime_Msg(){        //  \
    +		System.out.println(mensagem); //   | -> Definição de métodos 
    +	}                                 //  /
    +
    +	public static void main(String[] args){ //  \
    +		Imprime_Msg();                      //   | -> Corpo do Programa
    +	}                                       //  /
    +}
    +

    Operadores
    ...

    É um símbolo que realiza uma operação
    @@ -135,306 +241,211 @@
    Operator Type
    -
    Operador Unário
    ...

    Exemplo 1

    int x = 10;
    -
    +
    Operador Unário
    ...
    Exemplo 1
    +

    Java

    +
    int x = 10;
     System.out.println(x++);//10(11)
    -System.out.println(++x);//12  
    -System.out.println(x--);//12(11)  
    +System.out.println(++x);//12
    +System.out.println(x--);//12(11)
     System.out.println(--x);//10  
    -
    -
    
    -10
    +
    +

    Output

    +
    10
     12
     12
     10
    -

    Exemplo 2

    int a=10;  
    -int b=-10;  
    -boolean c=true;  
    -boolean d=false;  
    -    
    -System.out.println(~a);//-11 (minus of total positive value which starts from 0)  
    -System.out.println(~b);//9 (positive of total minus, positive starts from 0)  
    -System.out.println(!c);//false (opposite of boolean value)  
    +
    +
    Exemplo 2
    +

    Java

    +
    int a=10; 
    +int b=-10;
    +boolean c=true; 
    +boolean d=false;
    +System.out.println(~a);//-11 (minus of total positive value which starts from 0)
    +System.out.println(~b);//9 (positive of total minus, positive starts from 0)
    +System.out.println(!c);//false (opposite of boolean value)
     System.out.println(!d);//true
    -
    -
    
    --11
    +
    +

    Output

    +
    -11
     9
     false
     true
    -
    Operador Aritmético
    ...

    Exemplo 1

    int a=10;  
    -int b=5; 
    -    
    -System.out.println(a+b);//15  
    -System.out.println(a-b);//5  
    -System.out.println(a*b);//50  
    -System.out.println(a/b);//2  
    -System.out.println(a%b);//0   
    -
    -
    
    -15
    +
    +
    Operador Aritmético
    ...
    Exemplo 1
    +

    Java

    +
    int a = 10;
    +int b = 5;
    +
    +System.out.println(a + b); // 15
    +System.out.println(a - b); // 5
    +System.out.println(a * b); // 50
    +System.out.println(a / b); // 2
    +System.out.println(a % b); // 0
    +
    +

    Output

    +
    15
     5
     50
     2
     0
    -

    Exemplo 2

    System.out.println(10*10/5+3-1*4/2);
    -
    
    -21
    -
    Operador Left Shift
    ...

    Exemplo 1

    System.out.println(10<<2);//10*2^2=10*4=40  
    -System.out.println(10<<3);//10*2^3=10*8=80  
    -System.out.println(20<<2);//20*2^2=20*4=80  
    +
    +
    Exemplo 2
    +

    Java

    +
    System.out.println(10*10/5+3-1*4/2);
    +
    +

    Output

    +
    21
    +
    +
    Operador Left Shift
    ...
    Exemplo
    +

    Java

    +
    System.out.println(10<<2);//10*2^2=10*4=40   
    +System.out.println(10<<3);//10*2^3=10*8=80   
    +System.out.println(20<<2);//20*2^2=20*4=80   
     System.out.println(15<<4);//15*2^4=15*16=240  
    -
    -
    
    -40
    +
    +

    Output

    +
    40
     80
     80
     240
    -
    Operador Right Shift
    ...

    Exemplo 1

    System.out.println(10>>2);//10/2^2=10/4=2  
    -System.out.println(20>>2);//20/2^2=20/4=5  
    +
    +
    Operador Right Shift
    ...
    Exemplo
    +

    Java

    +
    System.out.println(10>>2);//10/2^2=10/4=2
    +System.out.println(20>>2);//20/2^2=20/4=5
     System.out.println(20>>3);//20/2^3=20/8=2
    -
    
    -2
    +
    +

    Output

    +
    2
     5
     2
    -
    Operador Shift
    ...

    Exemplo 1

    //For positive number, >> and >>> works same  
    -System.out.println(20>>2);  
    -System.out.println(20>>>2);  
    -//For negative number, >>> changes parity bit (MSB) to 0  
    -System.out.println(-20>>2);  
    -System.out.println(-20>>>2);
    -
    
    -5
    +
    +
    Operador Shift
    ...
    Exemplo
    +

    Java

    +
    // For positive number, >> and >>> works same
    +System.out.println(20 >> 2);
    +System.out.println(20 >>> 2);
    +
    +// For negative number, >>> changes parity bit (MSB) to 0
    +System.out.println(-20 >> 2);
    +System.out.println(-20 >>> 2);
    +
    +

    Output

    +
    5
     5
     -5
     1073741819
    -
    Operador AND
    ...

    Exemplo 1

    int a=10;  
    -int b=5;  
    -int c=20;  
    -System.out.println(a<b&&a<c);//false && true = false || The logical && operator doesn't check the second condition if the first condition is false. 
    -System.out.println(a<b&a<c);//false & true = false || The bitwise & operator always checks both conditions whether first condition is true or false.
    -
    
    +
    +
    Operador AND
    ...
    Exemplo 1
    +

    Java

    +
    int a = 10;
    +int b = 5;
    +int c = 20;
    +
    +System.out.println(a < b && a < c); // false && true = false || O operador lógico && não verifica a segunda condição se a primeira for falsa.
    +System.out.println(a < b & a < c);  // false & true = false || O operador bitwise & verifica sempre ambas as condições, independentemente da primeira ser verdadeira ou falsa.
    +
    +

    Output

    +
    false
     false
    +
    +
    Operador AND
    ...
    Exemplo 2
    +

    Java

    +
    int a = 10;
    +int b = 5;
    +int c = 20;
    +
    +System.out.println(a < b && a++ < c); // false && true = false
    +System.out.println(a); // 10 because the second condition is not checked
    +System.out.println(a < b & a++ < c); // false && true = false
    +System.out.println(a); // 11 because the second condition is checked
    +
    +

    Output

    +
    false
     false
    -

    Exemplo 2

    int a=10;  
    -int b=5;  
    -int c=20;  
    -System.out.println(a<b&&a++<c);//false && true = false  
    -System.out.println(a);//10 because second condition is not checked  
    -System.out.println(a<b&a++<c);//false && true = false  
    -System.out.println(a);//11 because second condition is checked
    -
    
    -false
    -false
    -
    Operador OR
    ...

    Exemplo 1

    int a=10;  
    -int b=5;  
    -int c=20;  
    -System.out.println(a>b||a<c);//true || true = true - The logical || operator doesn't check the second condition if the first condition is true. 
    -System.out.println(a>b|a<c);//true | true = true - The bitwise | operator always checks both conditions whether first condition is true or false. 
    -//|| vs |  
    -System.out.println(a>b||a++<c);//true || true = true  
    -System.out.println(a);//10 because second condition is not checked  
    -System.out.println(a>b|a++<c);//true | true = true  
    -System.out.println(a);//11 because second condition is checked
    -
    
    -true
    +
    +
    Operador OR
    ...
    Exemplo 1
    +

    Java

    +
    int a = 10;
    +int b = 5;
    +int c = 20;
    +
    +System.out.println(a > b || a < c); // true || true = true - O operador lógico || não verifica a segunda condição se a primeira for verdadeira.
    +System.out.println(a > b | a < c);  // true | true = true - O operador bitwise | verifica sempre ambas as condições, independentemente da primeira ser verdadeira ou falsa.
    +
    +// || vs |
    +System.out.println(a > b || a++ < c); // true || true = true
    +System.out.println(a); // 10 porque a segunda condição não é verificada
    +System.out.println(a > b | a++ < c); // true | true = true
    +System.out.println(a); // 11 porque a segunda condição é verificada
    +
    +

    Output

    +
    true
     true
     true
     10
     true
     11
    -
    Operador Ternary
    ...

    Exemplo 1

    int a=2;  
    -int b=5;  
    -int min=(a<b)?a:b; // Java Ternary operator is used as one line replacement for if-then-else statement 
    +
    +
    Operador Ternário
    ...
    Exemplo 1
    +

    Java

    +
    int a = 2;
    +int b = 5;
    +int min = (a < b) ? a : b; // O operador ternário em Java é usado como uma substituição de uma linha para uma declaração if-then-else.
     System.out.println(min);
    -
    
    -2
    -
    Operador Atribuição
    ...

    Exemplo 1

    int a=10;  
    -int b=20;  
    -a+=4;//a=a+4 (a=10+4)  
    -b-=4;//b=b-4 (b=20-4)  
    -System.out.println(a);  
    +
    +

    Output

    +
    2
    +
    +
    Operador Atribuição
    ...
    Exemplo 1
    +

    Java

    +
    int a = 10;
    +int b = 20;
    +a += 4; // a = a + 4 (a = 10 + 4)
    +b -= 4; // b = b - 4 (b = 20 - 4)
    +System.out.println(a);
     System.out.println(b);
    -
    
    -14
    +
    +

    Output

    +
    14
     16
    -

    Exemplo 2

    int a=10;  
    -a+=3;//10+3  
    -System.out.println(a);  
    -a-=4;//13-4  
    -System.out.println(a);  
    -a*=2;//9*2  
    -System.out.println(a);  
    -a/=2;//18/2  
    +
    +
    Exemplo 2
    +

    Java

    +
    int a = 10;
    +a += 3; // 10 + 3
     System.out.println(a);
    -
    
    -13
    +a -= 4; // 13 - 4
    +System.out.println(a);
    +a *= 2; // 9 * 2
    +System.out.println(a);
    +a /= 2; // 18 / 2
    +System.out.println(a);
    +
    +

    Output

    +
    13
     9
     18
     9
    -

    Exemplo 3 cast

    short a=10;  
    -short b=10;  
    -a=(short)(a+b);//20 which is int now converted to short  
    +
    +
    Operador de Atribuição com Cast
    ...
    Exemplo
    +

    Java

    +
    short a = 10;
    +short b = 10;
    +a = (short)(a + b); // 20, que é um int, agora convertido para short
     System.out.println(a);
    -
    
    -20
    -

    center

    Métodos
    ...

    Um método em Java é equivalente a uma função, subrotina ou procedimento em outras linguagens de programação.
    -

    Quando definimos um objeto num programa orientado a objetos, implementamos todo o comportamento desse objeto em um ou mais métodos.

    -
    Em Java não existe o conceito de métodos globais. Todos os métodos devem sempre ser definidos dentro de uma classe.
    -

    Syntax

    [modificador] tipo_retorno identificador ([argumentos])
    [modificador] tipo_retorno identificador ([argumentos]){
    -	//Corpo do método
    -}
    -
    Modificadores de acesso
    ...
    Java controla o acesso a atributos e métodos através do uso dos modificadores de acesso. São eles:
    public
    -

    -> O menos restritivo

    -

    -> Atributos e métodos com este modificador, podem ser acedidos por:

    -
      -
    • métodos da própria classe
    • -
    • classes derivadas desta
    • -
    • qualquer outra classe em qualquer outro pacote
    • -
    -
    protected
    -

    -> Atributos e métodos com este modificador, podem ser acedidos por:

    -
      -
    • métodos da própria classe
    • -
    • classes derivadas
    • -
    -
    private
    -

    -> O mais restritivo

    -

    ->Atributos e métodos com este modificador, podem ser acedidos por:

    -
      -
    • métodos da própria classe
    • -
    -
    Quando não é definido
    -

    -> Atributos e métodos sem modificador, podem ser acedidos por:

    -
      -
    • métodos da própria classe
    • -
    • classes derivadas
    • -
    • qualquer outra classe dentro do mesmo pacote
    • -
    -
    Nome de métodos
    ...
    Usar verbos para nome de métodos. Ex: getUserName()
    A primeira letra do nome em minúscula, com cada letra inicial interna maiúscula.
    -

    O nome de um método deve começar com uma letra (a-z/A-Z), um underscore ( _ ), ou um sinal de dólar ( $ ). Os caracteres subsequentes podem incluir os dígitos de 0 a 9.

    -
    Argumentos
    ...
    Um método pode ter zero ou mais argumentos (ou parâmetros)
    Info
    -

    -> Caso não tenha argumentos, é necessário colocar os parênteses vazios tanto na definição como na chamada do método.
    --> Assinatura do método: o nome do método acrescido dos seus parâmetros.
    --> Cada argumento deve ser declarado especificando o tipo e o nome.
    --> Caso seja mais que um argumento, cada declaração deve estar separada por vírgula.

    -

    center

    Retornar um valor pelo método
    ...
    Para retornar valor, é necessário definir na frente do nome do método o tipo do valor a ser retornado.
    -

    Pode ser:

    -
      -
    • primitivo
    • -
    • classe
    • -
    • interface
    • -
    -
    Se não é suposto o método retornar um valor, é obrigatória a utilização do tipo void.

    center

    return é utilizado para passar o valor requerido de volta para quem chamou o método.
    -

    Quando este comando é encontrado, o método termina imediatamente a sua execução.

    -
    Passar primitivo
    ...
    Primitivo
    -

    -> Quando é passado na chamada do método, uma cópia deste valor é criada e atribuída ao argumento do método. Se o método alterar este valor, só será afectada nesse método.
    -center

    -
    Passar referência de um objeto
    ...
    Referência de um objeto
    -

    -> Aqui, é passada uma referência ao objeto original, ao invés de uma cópia do objeto. Qualquer alteração, afetará o objeto original.
    -center

    -
    main
    ...
    public static void main(String[] args)
    -
    O método main é um método especial pois representa o ponto de entrada para a execução de um programa em Java.
    Nem toda classe terá um método main.
    -

    Uma classe que não possui um método main não pode ser “executada” pois não representa um programa em Java. Ela será sim, utilizada como classe utilitária para a construção de outras classes ou mesmo de um programa.

    -
    printf
    ...
    
    -System.out.printf("%d", n);
    -
    -
    
    -System.out.printf("Idade: %d da Maria", n);
    -
    -
    println
    ...
    Print Line
    
    -System.out.println(n);
    -
    -
    
    -System.out.println("Idade: " +n+ "da Maria");
    -
    -
    format
    ...
    É mais seguro que o printf. Permite fazer as mesmas formatações.
    System.out.format("Preço do azeite: %.2f", precoAzeite);
    -

    Constante
    ...

    Uma constante pode tanto ser definida como um atributo de classe como uma variável local.
    -

    -> A atribuição do valor pode ser feita no momento da declaração ou posteriormente.
    --> Depois de atribuído um valor não é permitido que outra atribuição seja efectuada.

    -
    Os nomes das constantes devem ser descritivos e escritos em maiúscula. Separar nomes internos com __

    Syntax

    final tipo IDENTIFICADOR = valor;
    -

    Exemplo

    final double MIN_WIDTH = 100.0;
    -

    Caracteres literais
    ...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CharO que faz
    \nnova linha
    \""aspas duplas
    \"aspas simples
    \rreescreve por cima do anterior
    \bretrocesso do cursor de 1 char
    \u006Fvalores unicode
    \ttabulação
    -

    Classes e Objetos
    ...

    Objetos
    ...
    Objetos são um conjunto de dados mais um conjunto de procedimentos que representam a estrutura e o comportamento inerentes às entidades, concretas ou abstratas, do mundo real.
    Podem ser definidos como uma instância de uma classe
    Entidades concretas
    -

    -> Representam objetos concretos
    -Ex: carro ou avião

    -

    Constituído por:

    -
      -
    • Atributos
    • -
    • Métodos (que manipulam e fornecem respostas a partir dos valores dos atributos)
    • -
    -
    Entidades não tão concretas
    -

    -> Representam objetos não tão concretos
    -Ex: representação de elementos geométricos num plano

    -

    Constituído por:

    -
      -
    • Atributos (que constituem variáveis)
    • -
    • Métodos (que ditam o comportamento)
    • -
    -
    Antes da implementação de uma aplicação orientada a objetos, deverá-se identificar primeiro os objetos que a compõe e as suas propriedades.
    -

    Em outras palavras, a identificação de quais atributos e métodos terá um objeto depende sempre do contexto da aplicação, de como pretendemos usar o objeto. Só tendo isso em mente podemos levantar os atributos e métodos relevantes ao objeto e suprimir aqueles irrelevantes para o sistema em questão.

    -
    Atributos -> Conjunto de dados de um objeto (são as variáveis)
    Métodos -> Conjunto de procedimentos de um objeto (são as funções)
    Classe
    ...
    Uma classe é uma coleção de objetos. É uma entidade lógica.
    Uma classe pode ser vista como uma planta/delineação de onde se pode criar um objeto individual.
    Uma classe é uma descrição dos atributos e dos métodos de um determinado tipo de objeto.
    Em termos de programação, definir classes significa formalizar um novo tipo de dado e todas as operações associadas a esse tipo.
    -

    Declarar objetos significa criar variáveis do tipo definido.

    -
    Instância
    ...
    Instância -> é um objeto gerado por uma classe.
    -
      -
    • A classe -> é a representação de um objeto
    • -
    • A instância -> é o objeto propriamente dito
    • -
    -
    O conteúdo de um objeto, o estado interno, é definido pelas suas variáveis de instância (atributos).
    -

    Dois objetos diferentes da mesma classe, podem possuir valores diferentes para os seus atributos e consequentemente apresentar estados internos diferentes.

    -
    Exemplo
    ...

    center

    Control Flow Statements
    ...

    center

    IF
    ...
    if
    ...

    Syntax

    if(condition) {    
    -	statement 1; //executes when condition is true   
    -}
    -

    Exemplo

    int x = 10;    
    +
    +

    Output

    +
    20
    +
    +

    center

    Ciclos
    ...

    center

    IF
    ...
    Exemplo
    int x = 10;    
     int y = 12;    
     if(x + y > 20) {    
     	System.out.println("x + y is greater than 20");    
     }
     
    x + y is greater than 20
    -
    if else
    ...

    center

    Syntax

    if(condition) {    
    -	statement 1; //executes when condition is true   
    -}  
    -else{  
    -	statement 2; //executes when condition is false   
    -}
    -

    Exemplo

    int x = 10;  
    +
    if else
    ...
    Exemplo
    int x = 10;  
     int y = 12;  
     if(x+y < 10) {  
     	System.out.println("x + y is less than      10");  
    @@ -443,7 +454,7 @@
     	System.out.println("x + y is greater than 20");  
     }
     
    x + y is greater than 20
    -

    Exemplo Mais que uma condição

    if (fim == false) && (cont > 0){ 
    +
    Exemplo - mais que uma condição
    if (fim == false) && (cont > 0){ 
      cont ++; 
      System.out.println(Continuando...); 
     } 
    @@ -451,16 +462,7 @@
      cont = 0; 
      System.out.println(Término!); 
     }
    -
    if else if
    ...

    Syntax

    if(condition 1) {    
    -	statement 1; //executes when condition 1 is true   
    -}  
    -else if(condition 2) {  
    -	statement 2; //executes when condition 2 is true   
    -}  
    -else {  
    -	statement 2; //executes when all the conditions are false   
    -}
    -

    Exemplo

    String city = "Delhi";  
    +
    if else if
    ...
    Exemplo
    String city = "Delhi";  
     
     if(city == "Meerut") {  
     	System.out.println("city is meerut");  
    @@ -475,16 +477,7 @@
     	System.out.println(city);  
     }
     
    Delhi
    -
    if nested
    ...

    Syntax

    if(condition 1) {    
    -	statement 1; //executes when condition 1 is true   
    -if(condition 2) {  
    -	statement 2; //executes when condition 2 is true   
    -}  
    -else{  
    -	statement 2; //executes when condition 2 is false   
    -}  
    -}
    -

    Exemplo

    String address = "Delhi, India";    
    +
    if nested
    ...
    Exemplo
    String address = "Delhi, India";    
     
     if(address.endsWith("India")) {  
     
    @@ -502,20 +495,7 @@
     	System.out.println("You are not living in India");    
     }
     
    Delhi
    -
    Switch
    ...
    Só aceita char, byte, short ou int como expressão de comparação.

    center

    Syntax

    switch (expression){  
    -     case value1:  
    -	     statement1;  
    -	      break;  
    -	 .  
    -     .  
    -     .  
    -	 case valueN:  
    -	     statementN;  
    -	     break;  
    -     default:  
    -	     default statement;  
    -}
    -

    Exemplo

    int num = 2;  
    +
    Switch
    ...
    Só aceita char, byte, short ou int como expressão de comparação.
    Exemplo
    int num = 2;  
     
     switch (num){  
     	case 0:  
    @@ -528,10 +508,7 @@
     		System.out.println(num);  
     }
     
    2
    -
    Loop
    ...
    for
    ...

    center

    Syntax

    for(initialization, condition, increment/decrement) {    
    -//block of statements    
    -}
    -

    center

    Exemplo

    // TODO Auto-generated method stub  
    +
    For
    ...
    for
    ...
    Exemplo
    // TODO Auto-generated method stub  
     int sum = 0;  
     
     for(int j = 1; j<=10; j++) {  
    @@ -539,13 +516,10 @@
     }  
     System.out.println("The sum of first 10 natural numbers is " + sum);
     
    The sum of first 10 natural numbers is 55
    -
    É possível fazer a inicialização e incremento com mais de uma variável
    for(i=0, j=10; i<8 && j>2; i++, j--){
    +
    Exemplo - Inicialização e incremento com mais de uma variável
    for(i=0, j=10; i<8 && j>2; i++, j--){
     	comando;
     }
    -
    for each
    ...

    Syntax

    for(data_type var : array_name/collection_name){    
    -	//statements    
    -}
    -

    Example

    // TODO Auto-generated method stub    
    +
    for each
    ...
    Exemplo
    // TODO Auto-generated method stub    
     String[] names = {"Java","C","C++","Python","JavaScript"};    
     
     System.out.println("Printing the content of the array names:\n");    
    @@ -560,10 +534,7 @@
     C++
     Python
     JavaScript
    -
    while
    ...

    center

    Syntax

    while(condition){    
    -	//looping statements    
    -}
    -

    center

    Exemplo

    // TODO Auto-generated method stub    
    +
    While
    ...
    Exemplo
    // TODO Auto-generated method stub    
     int i = 0;    
     System.out.println("Printing the list of first 10 even numbers \n");    
     
    @@ -579,10 +550,7 @@
     6
     8
     10
    -
    do while
    ...

    center

    Syntax

    do{    
    -	//statements    
    -} while (condition);
    -

    center

    Exemplo

    // TODO Auto-generated method stub    
    +
    do while
    ...
    Exemplo
    // TODO Auto-generated method stub    
     int i = 0;    
     System.out.println("Printing the list of first 10 even numbers \n");    
     
    @@ -597,7 +565,7 @@
     6
     8
     10
    -
    break
    ...
    É usado para mudar o controlo para o final do ciclo.

    center

    break com for
    ...

    Exemplo

    // TODO Auto-generated method stub  
    +
    break
    ...
    É usado para mudar o controlo para o final do ciclo.
    break com for
    ...
    Exemplo
    // TODO Auto-generated method stub  
     for(int i = 0; i<= 10; i++) {  
     	System.out.println(i);  
     	if(i==6) {  
    @@ -611,7 +579,7 @@
     4
     5
     6
    -
    break com labeled for
    ...

    Exemplo

    // TODO Auto-generated method stub    
    +
    break com labeled for
    ...
    Exemplo
    // TODO Auto-generated method stub    
     a:    
     	for(int i = 0; i<= 10; i++) {    
     b:    
    @@ -634,7 +602,7 @@
     5
     
    Continue
    ...
    O comando para a execução do ciclo naquele ponto e transfere de volta para o inicio do ciclo para dar inicio a uma nova interação.

    center

    -

    Exemplo

    //for loop  
    +
    Exemplo
    //for loop  
         for(int i=1;i<=10;i++){  
             if(i==5){  
                 //using continue statement  
    @@ -651,28 +619,7 @@
     8
     9
     10
    -

    Estrutura
    ...

    O desenvolvimento de aplicações Java sempre é feito através de classes. A definição de uma classe Java deve respeitar a seguinte sintaxe:
    <modificador de acesso> class <nome da classe> { 
    -	<Declaração das Variáveis de Instância (Atributos)> 
    -	<Declaração de Métodos> 
    -	
    -	public static void main( String args[] ){ 
    -		//corpo principal do programa
    -	} 
    -} 
    -

    Exemplo

    public class Exemplo1{ // public -> modificador | Exemplo1 -> Nome da classe
    -	String mensagem = "O meu primeiro programa!";// mensagem -> var da instancia
    -
    -	public void Imprime_Msg(){        //  \
    -		System.out.println(mensagem); //   | -> Definição de métodos 
    -	}                                 //  /
    -
    -	public static void main(String[] args){ //  \
    -		Imprime_Msg();                      //   | -> Corpo do Programa
    -	}                                       //  /
    -}
    -

    Exemplos de Syntax
    ...

    Ter ponto e vírgula no final da classe é opcional em java
    -

    Exemplo:

    -
    
    +

    Exemplos
    ...

    Ter ponto e vírgula no final da classe é opcional em java. Exemplo:
    
     1. class A{    
     2.    static public void main(String... args){    
     3.       System.out.println("hello java");    
    @@ -681,21 +628,7 @@
     
    OUTPUT
     
     hello java
    -
    Método main
    ...
    // Assinaturas válidas
    -1. public static void main(String[] args)    
    -2. public static void main(String []args)    
    -3. public static void main(String args[])    
    -4. public static void main(String... args)    
    -5. static public void main(String[] args)    
    -6. public static final void main(String[] args)    
    -7. final public static void main(String[] args)    
    -8. final strictfp public static void main(String[] args)
    -
    // Assinaturas inválidas
    -1. public void main(String[] args)    
    -2. static void main(String[] args)    
    -3. public void static main(String[] args)    
    -4. abstract public static void main(String[] args)
    -
    Soma de dois números
    ...
    package com.mycompany.first;
    +
    Soma de dois números
    ...
    package com.mycompany.first;
     
     public class somaDoisNumeros {
       
    @@ -784,4 +717,4 @@
     
    OUTPUT
     
     20
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/Redes/Aula.html b/Redes/Aula.html new file mode 100644 index 0000000..5b6d3ce --- /dev/null +++ b/Redes/Aula.html @@ -0,0 +1,40 @@ + + + + Aula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/Redes/Equipamento.html b/Redes/Equipamento.html index 72a5018..c2b6233 100644 --- a/Redes/Equipamento.html +++ b/Redes/Equipamento.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/Redes/Materia.html b/Redes/Materia.html new file mode 100644 index 0000000..7db91a8 --- /dev/null +++ b/Redes/Materia.html @@ -0,0 +1,772 @@ + + + + Materia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Windows Server
    ...

    Info
    +

    Tem a interface como windows 10

    +
    Server manager
    ...
    Info
    +

    Role -> Funcionalidades
    +Aquilo que queremos que o servidor vá fazer

    +

    Serviços no servidor
    ...

    IPs - Internet Protocol
    ...
    O IP, internet protocol, é um protocolo que permite o envio da informação, sob a forma de pacotes, de um computador para outro, através da internet.
    +
    O protocolo IP só entrega os pacotes, sendo, assim, necessário a ajuda de um outro protocolo (de nível superior) - o Transmission Control Protocol - TCP - para os reordenar.
    +
    Lease time / expire
    +

    Lease time -> O tempo que router guarda o IP de um dispositivo específico. O tempo recomendado é de 48h (pode aparecer em segundos, minutos ou horas), mas é configurável.
    +Lease expire -> Quando o IP expira.

    +
    Protocolo DHCP
    ...
    Para que serve?
    +

    Atribui IPs internos.

    +
    Atribuição dos IP's através do DHCP, a partir da Pool, atribui o próximo IP disponível
    +
    Protocolo DNS
    ...
    Para que serve?
    +

    Atribui um endereço ao IP / Traduz o endereço. O DNS é atribuído pelo ISP (cada ISP tem o seu DNS).

    +
    Quando há websites que não podem ser acedidos com o nosso DNS, podemos alterá-lo manualmente. Passamos a seguir as regras do DNS que colocamos.
    +
    Há softwares que podem alterar o DNS (proxy) de forma obscura.
    Protocolo TCP/IP
    ...
    O que é?
    +

    É para os computadores se ligarem à internet.
    +Para os computadores se entenderem utilizam o protocolo TCP/IP.

    +
    Quantas portas tem?
    +

    As portas são a maneira do cliente comunicar com o servidor.
    +Tem 65.536.
    +As mais importantes são até 1024
    +Acima de 1024 as páginas podem ser sorteadas (vai tentando até estar alguma aberta)

    +
    Servidores
    ...
    As portas abaixo referidas são as default, não é aconselhado mas podem ser alteradas.
    Servidor HTTP (web)
    +

    Hypertext Transfer Protocol
    +Comunicação por hipertexto, serve o www (páginas da internet).
    +Porta 80

    +
    Servidor HTTPS
    +

    Hypertext Transfer Protocol Secure
    +Comunicação por hipertexto de forma segura. A segurança é na comunicação entre o servidor e o cliente.
    +Porta 443

    +
    Servidor FTP
    +

    File Transfer Protocol
    +Para transferência de ficheiros.
    +Porta 21

    +
    Servidor Email
    +

    É um sistema que gere o envio, recebimento, armazenamento e encaminhamento de emails.

    +
    Servidor SMTP
    +

    Simple Mail Transfer Protocol
    +Protocolo responsável pelo envio de emails.
    +Porta 25 (ou 587 com autenticação e criptografia)

    +
    Servidor POP3 e IMAP
    +

    Responsáveis pelo recebimento e armazenamento das mensagens de email.

    +

    POP3: Post Office Protocol 3
    +-> Mais antigo
    +-> Faz download das mensagens para o dispositivo do user, removendo-as do servidor logo de seguida.
    +Porta 110 (ou 995 com criptografia SSL/TLS)

    +

    IMAP: Internet Message Access Protocol
    +-> Mais avançado
    +-> As mensagens são sincronizadas entre o servidor e o dispositivo do user, mantendo uma cópia no servidor mesmo após a leitura.
    +Porta 143 (ou 993 com criptografia SSL/TLS)

    +
    Servidor SMB
    +

    Server Message Block
    +Servidor de partilha de ficheiros (ex: partilha espaço de disco com outros computadores)
    +Porta 445

    +
    Servidor ICMP
    +

    Internet Control Message Protocol
    +O IP não tem um mecanismo para o envio de erros, por isso utiliza o servidor ICMP para comunicar problemas com a transmissão de dados.
    +Não utiliza porta, sendo que opera na camada de rede.

    +
    Tip
    +

    O ping of death utiliza este protocolo

    +
    +
    Servidor Telnet
    +

    Teletype Network
    +É um protocolo de rede que permite fazer conexão remota e controlar dispositivos, como servidores, routers e computador, através de uma interface de terminal.
    +Porta 23

    +
    Servidor SSH
    +

    Secure Shell
    +É um protocolo de comunicação de rede que permite que dois computadores comuniquem e partilhem informação de forma segura.
    +Porta 22

    +
    Ataques
    ...
    Ataque DOS
    +

    Denial-Of-Service: Negação de serviço

    +
    Ataque DDOS
    +

    Distributed Denial-Of-Service
    +Várias pessoas / computadores a pedir serviços que não estão no servidor, ao ponto de não conseguir responder a quem deve ou ficar mais lento.
    +Tipicamente acontece através de uma botnet.

    +
    Botnet
    +

    Robot network
    +É uma rede de computadores infetados com um malware que são controlados por um único atacante.

    +
    Como resolver este ataque?
    +

    Firewall
    +Ao atacar um serviço com um computador, esse serviço bloqueia o router com a firewall, ou seja, bloqueia a rede toda.

    +
    Exemplo
    +

    Quando um cliente fizer o mesmo pedido 5 vezes, bloquea.

    +
    +
    Firewall
    ...
    O que é?
    +

    É um dispositivo de segurança de rede que monitora o tráfego de rede de entrada e saída.

    +
    Para que serve?
    +

    Para permitir ou bloquear tráfegos específicos de acordo com as regras de segurança definidas.
    +Não deixa passar pacotes adulterados / hackeados.

    +
    Atenção!
    +

    Um firewall pode ser hardware, ou software, ou ambos.
    +Quem não tiver uma firewall no servidor, corre o risco de ser atacado assim que se conectar à internet.

    +
    O que é e para que serve?
    +

    É um ficheiro colocado no computador com informações sobre as preferências do utilizador. Cada website acede apenas ao cookie desse mesmo website.

    +
    Tip
    +

    A navegação anónima também tem cookies, no entanto são apagados assim que o browser é fechado.

    +
    A Informação
    ...
    Como é enviada?
    +

    A informação é dividida em pacotes com cabeçalho.
    +O cabeçalho contém:
    +-> Origem
    +-> Destino
    +-> TTL (Time To Live)

    +

    Servidores SQL
    ...

    O que é e para que serve?
    +

    É uma SGBD.
    +Serve para gerir a base de dados.
    +Utiliza-se quando se tem uma aplicação que precisa de acesso à base de dados.

    +
    SGBD
    +

    Software de Gestão de Bases de Dados

    +
    +
    Servidor Microsoft SQ
    ...
    Microsoft SQL Server
    +

    Porta 1433

    +

    -> Requer mais recursos.
    +-> É um software pago.
    +-> É seguro.
    +-> Software trabalho e extremamente complexo.

    +
    Servidor MySQL
    ...
    MYSQL Server
    +

    -> É grátis.
    +-> Open-Source.

    +
    Alternativas
    +

    MariaDB
    +PostgreSQL

    +
    +
    Acesso à base de dados
    ...
    Acesso à BD
    +

    O acesso à base de dados tem que ser feito através de uma linguagem de programação dinâmica.

    +
    Exemplo de linguagens
    +

    PHP, Python, Java, Pearl, ASP...

    +
    Atenção
    +

    ASP só acede a base de dados Microsoft SQL Server
    +As restantes linguagens acedem à base de dados de tudo o resto.

    +
    +
    +

    Servidor
    ...

    O que é?
    +

    Um servidor é um computador / sistema de computadores que fornece serviços, recursos e informações a computadores / dispositivos / utilizadores de uma redes.

    +
    Como funciona?
    +

    Responde a pedidos, processa dados e compartilha informações, tendo assim um cargo fundamental na distribuição e acesso aos recursos da rede.

    +
    Criar um servidor
    ...
    Não é possível fazer servidor daquilo que se quer, mas sim apenas daquilo que está disponível.
    Deverá ter:
    +

    -> Boa memória RAM (acima de 2GB)
    +-> Bom processador
    +-> Bom disco

    +
    CPU para servidor
    +

    É necessário ter processamento distribuído pelos vários cores (núcleos).

    +
    Curiosidade
    +

    Os mais baratos têm 64 cores (núcleos)

    +
    +
    Exemplos de CPU para servidor
    +

    Intel -> Xeon
    +AMD -> Epyc, Opteron

    +
    Quando um servidor é criado nas instalações de uma empresa, é importante ter em conta:
    +

    -> Segurança
    +-> Bastidor - servidor rack, switch rack, patchpanel rack, ups, (opcional: router)

    +
    O bastidor é de metal (normalmente fechado), se colocar o router lá e necessitar de utilizar o Wi-Fi, irá notar-se a degradação da rede Wi-Fi.
    +
    Atualmente o Windows Server 2019 é o mais utilizado em servidores.
    Um admin pode dar reset a outro admin
    O servidor pode estar ligado:
    +

    -> ao Switch
    +-> ao PatchPanel
    +-> ao Router -> a vantagem em ligar ao router é que a interface é diferente e fica isolado, sendo assim é possível fazer uma DMZ (demilitarized zone), adicionando assim uma camada extra de segurança

    +

    center

    +
    Roles
    ...
    Adicionar um role no Windows Server
    +

    -> Add Role - Adicionar capacidade ao servidor
    +-> Installation Type - Role based
    +-> Server Roles - Web Server IIS
    +-> Install

    +
    Serviço ISS
    +

    Internet Information Services
    +Instalar um server role com o serviço ISS, transforma o nosso computador num servidor web.

    +
    Lista de roles
    ...
    DHCP Server
    +

    Dynamic Host Configuration Protocol
    +Mantém uma pool de endereços e liberta um para qualquer cliente que entre na rede. Por exemplo: usado para fazer uma rede local.
    +-> É uma forma de não sobrecarregar tanto o router.

    +
    DNS Server
    +

    Domain Name System
    +O DNS Server converte nomes de domínio em endereços IP.

    +

    Os DNS mais conhecidos são:
    +-> 8.8.8.8 (endereço google)
    +-> 8.8.4.4 (endereço google secundário)

    +
    Sites bloqueados
    +

    É possível aceder de duas formas:
    +-> Aceder através do IP.
    +-> Trocando o nosso DNS por outro onde os sites não estão bloqueados.

    +
    Nota
    +

    Os sites bloqueados através do DNS, são bloqueados pelo ISP.

    +
    +
    Remote Desktop
    +

    Para aceder a outro computador.

    +
    Página de servidor
    ...
    Alterar página de servidor. Passos
    +

    -> Ir a c:\inetpub\wwwroot
    +-> Apagar o que lá está
    +-> Criar um documento de texto com extensão html
    +-> Escrever o conteúdo html
    +-> Gravar e colar na localização (acima referida)
    +-> Entrar no http://localhost

    +
    Logs
    ...
    Os servidores guardam os logs de todas as pessoas que acedem e quando acedem. Quando o cliente apaga o histórico, o servidor mantém o registo desse IP.
    O que é um log?
    +

    É um documento de texto que contém o registo de toda a atividade, relacionada com um servidor web específico, durante um período de tempo definido.

    +
    Lista de Features
    ...
    Telnet
    +

    Protocolo utilizado numa rede para providenciar uma conexão a um terminal virtual.

    +
    SMB
    +

    Usado para suportar a partilha de ficheiros (tem o FTP server)

    +
    SMTP
    +

    Protocolo de email que está encarregue do envio de emails.

    +

    Servidor NAS
    ...

    Network Attached Storage
    Armazenamento ligado em Rede
    Para que serve?
    +

    Um NAS é um dispositivo de armazenamento e de processamento ligado a uma rede local que possibilita o armazenamento e a partilha de dados a partir de um local centralizado.

    +
    É um sistema de expansão horizontal: à medida que o utilizador precisar de mais armazenamento, pode adicionar ao espaço que já tem.
    +
    O que são as baias?
    +

    As baias são onde se colocam os discos. A quantidade de baias define a quantidade de discos que se pode instalar.

    +
    Normalmente são usados discos mecânicos de 3.5" com interfaces SATA. Também existem dispositivos que permitem a instalação de discos SSD de 2".
    +
    Já existem NAS "mistos", em que as unidades SSD servem para cache para acelerar as operações de leitura e escrita.
    +
    São uma alternativa a serviços de armazenamento em cloud
    +

    [!tip]O NAS para ser fiável tem que:
    +-> Ter discos rígidos mecânico, SSD ou M.2 NVMe;
    +-> Ter mais que 1 disco e ativar o RAID.

    +
    Servidor cloud
    ...
    Desvantagens
    +

    -> Serviço a pagar (se for grátis, o espaço é reduzido)
    +-> Quando se deixa de pagar os ficheiros são apagados
    +-> Em caso de falência não existem garantias de que os dados serão salvaguardados
    +-> Não existem 100% garantia de que os ficheiros não são observados/acedidos por terceiros.

    +
    Servidor NAS
    ...
    Desvantagens
    +

    -> Servidor tão seguro quanto o local em que está localizado
    +-> Consumo de energia, sendo que está ligado 24h

    +
    Success
    +

    -> Controlo total do servidor, software e hardware
    +-> Instalação de variados recursos para melhor proveito dos recursos (o tipo e número de serviços estão dependentes do software instalado)
    +-> Sistemas RAID para guardar ficheiros com maior segurança e velocidade

    +

    RAID
    ...

    Redundant Array of Independent Disks
    Conjunto Redundante de Discos Independentes
    Para que serve?
    +

    O RAID é um meio de se criar um subsistema de armazenamento composto por vários discos individuais, com a finalidade de aumentar a segurança dos dados através da introdução da redundância e aumentar o desempenho.

    +
    O RAID está disponível em todos os dispositivos NAS.
    +
    Ao configurar um sistema RAID no NAS, o utilizador deve ter em atenção:
    +

    -> Capacidades dos discos: se tiverem capacidades diferentes, o sistema vai ajustar pelo disco com menor capacidade.
    +-> Nível de RAID

    +
    Os discos usados em RAID num servidor NAS devem ser da tecnologia RED devido à sua confiabilidade, tolerância a vibrações, eficiência energética e suporte a RAID.

    Níveis de RAID
    ...

    Tipos de RAID
    +

    -> Distribuição: divide a gravação dos dados em diferentes discos
    +-> Espelhamento: os dados são espelhados nos diferentes discos
    +-> Paridade: cria dados adicionais junto aos ficheiros originais

    +
    RAID 0 - Striping
    ...
    Distribuição

    center

    Como funciona?
    +

    O conteúdo é dividido entre todos os discos rígidos, de maneira que executem a leitura e gravação dos dados de forma simultânea.

    +
    Vantagens
    +

    -> Aumenta a velocidade de processamento
    +-> Reduz o custo de expansão de memória
    +-> É uma técnica fácil de implementar

    +
    Desvantagens
    +

    -> Compromete a segurança dos dados
    +-> Não tem espelhamento nem paridade de dados

    +
    RAID 1 - Mirroring
    ...
    Espelhamento

    center

    Como funciona?
    +

    Os dados são copiados para um ou mais discos do sistema. Sempre que há modificação nos dados, são modificados em todos os discos.

    +
    Vantagens
    +

    -> Segurança de dados
    +-> Disponibilidade da máquina em caso de falha

    +
    Desvantagens
    +

    -> A capacidade efetiva de armazenamento é apenas metade
    +-> Aumenta o custo da expansão da memória
    +-> Pode afetar a velocidade de processamento

    +
    RAID 2
    ...
    Obsoleto.
    Como funciona?
    +

    É similar ao RAID 0, conteúdo é dividido entre os discos, mas adiciona algoritmos de controlo e correção de erros, que trazem uma proteção adicional em caso de falhas.

    +
    Este funcionamento já está incorporado nos discos rígidos atuais.
    +
    RAID 3
    ...
    Obsoleto.
    Como funciona?
    +

    Os discos são divididos em pequenos blocos, que recebem bits adicionais (bits de paridade) num novo disco, responsável por identificar e corrigir erros nas unidades.

    +
    A partir deste RAID, todos os mecanismos utilizam recursos de paridade.
    +
    RAID 4
    ...
    Obsoleto.
    Como funciona?
    +

    Semelhante ao RAID 3, mas os dados são divididos entre os discos e podem ser reconstruídos com recurso aos bits de paridade num disco adicional.

    +
    RAID 5 - Distributed parity
    ...
    Paridade distribuída

    center

    Como funciona?
    +

    Os recursos de paridade são distribuídos de forma alternada em vários discos. Se um disco falhar, é possível acionar o processo "rebuild" para reconstruir os dados.

    +
    Vantagens
    +

    -> Oferece um sistema de proteção de dados mais robusto
    +-> É mais rápido para ler dados
    +-> É mais rápido para identificar erros nos discos
    +-> Garante a disponibilidade da unidade mesmos e um disco falhar

    +
    Desvantagens
    +

    -> É um pouco mais lento para gravar dados (devido aos cálculos de paridade)
    +-> Tem uma técnica complexa que atrasa o tempo de restauração dos dados.

    +
    RAID 6 - Dual parity
    ...
    Dupla paridade

    center

    Como funciona?
    +

    Semelhante ao RAID 5, no entanto grava os dados de paridade em duas unidades diferentes. Assim, garante a integridade dos dados mesmo que 2 discos falhem ao mesmo tempo.

    +
    É necessário no mínimo 4 discos para ser implementado.
    +
    Vantagens
    +

    -> É rápido para ler dados e identificar erros nos discos
    +-> Garante a disponibilidade dos dados mesmo em caso de falha dupla

    +
    Desvantagens
    +

    -> Grava os dados mais lentamente que o RAID 5
    +-> Tem uma tecnologia complexa que afeta a velocidade de reconstrução

    +
    RAID 10 / 1+0 - Mirroring + Striping
    ...
    Distribuição Espelhada

    center

    Como funciona?
    +

    Este sistema tem dados espelhados em unidades secundárias (RAID 1), o que garante maior segurança, mas também utiliza a distribuição dos dados (RAID 0), para acelerar o processamento.

    +
    É uma combinação do RAID 1 e 0, com as suas vantagens e desvantagens. Exige no mínimo 4 discos rígidos.
    +
    Vantagens
    +

    -> Garante a segurança dos dados com o espelhamento
    +-> Aumenta a velocidade de transferência e recuperação de dados

    +
    Desvantagens
    +

    -> É uma solução cara para obter redundância
    +-> Tem um alto custo de expansão de memória

    +
    A melhor maneira de garantir a segurança de ficheiros é, no final do dia, através de um backup.
    JBOD
    ...
    Just a Bunch of Disks
    Como funciona?
    +

    O JBOD não é um modo de RAID, no entanto também é bastante usado. No JBOD a capacidade dos discos é somada e os discos passam a ser vistos pelo sistema como uma única unidade.

    +

    Command Prompt
    ...

    ipconfig
    ...
    Para que serve?
    +

    Ferramenta da linha de comandos que exibe a configuração de rede TCP/IP dos adaptadores de rede de um computador Windows.
    +center

    +
    ipconfig switches
    ...
    Os switches são utilizados para alterar os parâmetros do comando.
    ipconfig /all
    +

    Mostra a configuração TCP/IP completa dos adaptadores de rede do computador

    +
    ipconfig /flushdns
    +

    Liberta ou limpa o cache do DNS resolver. Este cache existe para que a pesquisa na internet seja mais rápida. Por vezes é necessário utilizar este comando, por exemplo se um site não estiver a funcionar. Também pode ajudar com questões de segurança.
    +center

    +
    DNS Spoofing
    +

    Quando hackers e malware podem alterar o nosso cache DNS e redirecioná-lo para websites fraudulentos.

    +
    +
    ipconfig /displaydns
    +

    Mostrar o que está guardado no cache do DNS.
    +center

    +
    ipconfig/?
    +

    Para ver a lista completa de switches
    +center

    +
    ping
    ...
    Para que serve?
    +

    Pode ser utilizada para solucionar problemas de rede
    +-> Testar se estamos conectados a uma rede local
    +-> Testar se a placa de rede funciona
    +-> Testar se estamos conectados à internet
    +-> Testar problemas de DNS
    +center

    +
    Funcionamento
    +

    -> A ferramenta ping envia 4 pacotes de dados para o endereço IP
    +-> O servidores responde com os mesmo 4 pacotes de volta (esta resposta chama-se Eco Reply Request)

    +
    +
    Problemas com o Eco Reply Request
    +

    -> Se houver mensagem de "Request timed out":
    +- O servidor está desligado
    +- A firewall do servidores está a bloquear os pedidos de ping
    +-> Se nem todos os pacotes de dados chegarem (Packet Loss):
    +- Congestionamento da rede
    +- Hardware defeituoso (cabos, placa de rede, router e modem)
    +-> Se houver mensagem de "Destination host unreachable"
    +- O router não tem informação de como enviar os dados para o destino
    +- O servidor remoto está inativo ou desconectado
    +- O computador não está conectado à internet

    +
    ping localhost
    +

    Se o ping for bem sucedido, a placa de rede do computador está a funcionar corretamente.
    +center

    +
    Teste Loopback
    +

    Envia sinais de volta ao nosso computador, para testar.

    +
    +
    ping host (ex: ping google.com)
    +

    Testar problemas com o DNS. Se der erro, testar fazer ping com o IP. Se o ping com o IP funcionar, então o problema é do DNS.
    +center

    +
    Como resolver?
    +

    -> Fazer flush do DNS -> ipconfig /flushdns
    +-> Verificar as configurações de DNS na configuração da placa de rede
    +-> Pode ser um problema com os próprios servidores DNS
    +-> Pode ser um problema do ISP

    +
    +
    ping switches
    ...
    Os switches são utilizados para alterar os parâmetros do comando.
    ping/?
    +

    center

    +
    netstat
    ...
    Network Statistics
    Para que serve?
    +

    Mostrar as atuais conexões à internet e a atividade das portas no nosso computador. É usado para ver quais são os serviços a ser executados no computador e as portas que estão abertas.

    +
    + + + + + + + + + + + + + + +
    ProtocoloIP Local : PortaIP dos sites : Nome da portaEstado
    ![[Pasted image 20230904125407.png570]]
    +
    netstat Switches
    ...
    Os switches são utilizados para alterar os parâmetros do comando.
    netstat -n
    +

    Só mostra números, não mostra nomes.

    +

    center

    +
    netstat -a
    +

    Mostra as conexões atuais e mostra que portas TCP e UDP estão a ouvir a conexão.

    +

    center

    +
    netstat -b
    +

    Para saber quais programas estão a ser utilizados para fazer as conexões.

    +

    center

    +
    netstat -f
    +

    Mostra o nome do domínio totalmente qualificado dos endereços aos quais estamos conectados.

    +

    center

    +
    É possível combinar os comandos acima referidos
    netstat -bf
    +

    Combinação do comando netstat -b com o netstat -f

    +

    center

    +
    netstat -an
    +

    Combinação do comando netstat -a com o netstat -n

    +

    center

    +
    netstat -?
    +

    Lista completa de switches

    +

    center

    +
    tracert
    ...
    pathping
    ...

    Equipamento
    ...

    Powerline
    ...
    O que é?
    +

    Dispositivo que se liga às tomadas elétricas. Transmite e recebe internet pela instalação elétrica.

    +
    Vantagem
    +

    É uma boa opção para casas grandes, onde o router não tem alcance suficiente para todas as divisões.

    +
    Desvantagem
    +

    Os repetidores são mais fáceis de instalar, razão pela qual já não se usar tanto.

    +

    center

    Mesh
    ...
    O que é?
    +

    É uma topologia de rede local que cria uma cooperação entre os vários dispositivos de rede. É um conjunto de routers e Wi-Fi points, colocados em diferentes locais, que criam uma rede com maior alcance.

    +
    É aconselhado que um dos Wi-Fi points esteja ligado por cabo ao router
    +
    Para que serve?
    +

    Para que os dados e as conexões sejam o mais eficiente possível.

    +
    Alarga o sinal de rede sem criar SSID novos, ao contrário do que acontece com Wi-Fi extenders.
    +
    O balanceamento de carga é personalizável, configurável
    +

    -> Exemplo 1: Numa habitação, se um dispositivo estiver a usar mais largura de banda (por ex: a fazer um download), o sistema de rede dá mais prioridade a esse dispositivo.
    +-> Exemplo 2: Num local público, é mais aconselhável que todos os dispositivos tenham a mesma largura de banda, para que um só não atrase a rede toda.

    +

    center

    Hub
    ...
    Vantagens
    +

    -> Mais barato que switch

    +
    Desvantagens
    +

    -> Já não se usa

    +

    center

    Switch
    ...
    O que é e como funciona?
    +

    É um repartidor de sinal. Entrada pelo cabo e cada saída é para cada diferente dispositivo.

    +
    É possível ter um switch a receber 2 cabos, um primário e outro secundário. O secundário fica em standby para o caso do primário falhar.
    +
    Vantagens
    +

    -> Mais fácil encontrar para comprar

    +
    Desvantagens
    +

    -> Mais caro

    +
    Router -> Switch : é normal conectar na primeira ou ultima entrada

    center

    Patchcord
    +

    Do Patchpanel para o Switch é conectado com um patchcord, um cabo pequeno

    +

    center

    +
    Switch L3
    ...
    O que é?
    +

    Um switch L3 é um dispositivo de rede que opera na camada de rede do modelo OSI, permitindo o encaminhamento de pacotes com base em endereços IP de redes locais.

    +
    Para que serve?
    +

    Estes switch são usados para melhorar a performance de roteamento de rede numa LAN massiva, tal como as intranet de empresas.

    +
    Info
    +

    Principais características:
    +-> Trabalha com a layer 2 e 3 do OSI
    +-> Não tem interface WAN
    +-> Conecta dispositivos dentro da mesma subnet
    +-> Usa um simples algoritmo de troca
    +-> Protocolos de roteamentos são simples

    +

    center

    Topologias de rede
    ...

    O que é?
    +

    É a forma como a rede de computadores está estruturada. A topologia é a disposição das máquinas entre elas mesmas (como os switches, AP, etc.)

    +
    A forma de organização dos máquinas interfere na qualidade da sua conexão e na estabilidade da mesma.
    +
    Anel
    ...
    Os nós são configurados em um padrão circular. Os dados viajam por cada dispositivo à medida que percorrem o anel.
    Vantagens
    +

    -> Custo-beneficio
    +-> Barato para instalar
    +-> Fácil de identificar problemas de desempenho

    +
    Desvantagens
    +

    -> Se um nó cair, ele pode derrubar vários com ele
    +-> Todos os dispositivos compartilham largura de banda, o que pode limitar a taxa de transferência
    +-> Adicionar ou remover nós significa tempo de inatividade para toda a rede

    +

    center

    Estrela
    ...
    A rede é organizada de forma que os nós sejam conectados a um hub central, que atua como um servidor. O hub gerencia a transmissão de dados pela rede.
    Vantagens
    +

    -> Gestão central
    +-> Se um nó funcionar, a rede continua a funcionar
    +-> Dispositivos podem ser adicionados e removidos sem interromper a rede
    +-> Mais fácil para identificar e isolar problemas de desempenho

    +
    Desvantagens
    +

    -> Se o hub/switch central falhar, cai toda a rede
    +-> O desempenho e largura de banda são limitados pelo nó central
    +-> Pode sair caro para operar

    +

    center

    Barramento
    ...
    Orienta os dispositivos ao longo de um único cabo que vai de uma extremidade da rede à outra.
    Vantagens
    +

    -> Económico para redes menores
    +-> Layout simples, todos os dispositivos são conectados por um cabo
    +-> Podem ser adicionados mais nós ao longo da linha

    +
    Desvantagens
    +

    -> A rede é vulnerável a falhas de cabo
    +-> Cada nó adicionado diminui as velocidades de transmissão
    +-> Os dados só podem ser enviados numa direção de cada vez

    +

    center

    Árvore
    ...
    Um nó central conecta hubs secundários. Esses hubs têm uma relação pai-filho com os dispositivos. O eixo central é como o tronco da árvore. Onde as ramificações se conectam estão os hubs secundários ou nós de controle e, em seguida, os dispositivos conectados são anexados aos branches.
    Vantagens
    +

    -> Extremamente flexível e escalável
    +-> Facilidade na identificação de erros, uma vez que cada branch da rede pode ser diagnosticado individualmente

    +
    Desvantagens
    +

    -> Se um hub central falhar, os nós serão desconectados (embora as ramificações possam continuar a funcionar de forma independente)
    +-> A estrutura pode ser difícil de gerenciar de forma eficaz
    +-> Usa muito mais cabeamento do que outros métodos

    +

    center

    Malha
    ...
    Os nós são interconectados. Os dados são entregues pela distância mais curta disponível para transmissão.
    +

    -> Modo full-mesh: conectam todos os dispositivos na rede diretamente
    +-> Modo topologia de malha parcial: a maioria dos dispositivos conectam-se diretamente

    +
    Vantagens
    +

    -> Confiável e estável
    +-> Nenhuma falha de nó único faz com que a rede fique offline

    +
    Desvantagens
    +

    -> Grau complexo de interconectividade entre nós
    +-> Trabalho intensivo para instalar
    +-> Usa muito cabeamento para conectar todos os dispositivos.

    +

    center

    Híbrido
    ...
    Usa várias estruturas de topologia. É mais comum em grandes empresas em que cada departamento pode ter um tipo de topologia
    Vantagens
    +

    -> Flexibilidade
    +-> Pode ser personalizado de acordo com as necessidades do cliente

    +

    Proxy
    ...

    É um servidor intermediário que separa os utilizadores dos websites que eles pesquisam
    +

    Age como um servidor interposto entre um dispositivo e a internet, permitindo que o dispositivo acesse recursos online de forma anônima ou indireta

    +
    Liga uma ou várias impressoras a uma rede, através da interface USB.
    +
      +
    • Impressora -> USB -> print server -> router/switch/hub
    • +
    +

    center

    +

    Backbone
    ...

    O que é?
    +

    O backbone é a "espinha dorsal" de um prédio, onde passam cabos de electricidade, internet, luz, etc.

    +
    Normalmente estas ligações passam de baixo para cima, menos os cabos de antena analógica que passam de cima para baixo.
    +

    center

    +
    Localização
    +

    Normalmente, em cada apartamento, ao lado do contador da água, tem o compartimento do cabo de telefone, cabo coaxial, fibra óptica, etc...

    +
    Para que se possa passar um cabo pelo backbone de um prédio, é necessário informar o condomínio e depois passar o cabo pelo backbone.
    +
    Cabos
    +
      +
    • O cabo CAT6 é mais grosso e não tão maleável, tornando-se complicado passar o cabo.
    • +
    • Convém ser cabo blindado, pois é mais fino e garante a redução de perdas.
    • +
    • Convém também passar um cabo secundário, pois pode haver problemas com o primário. Caso o cabo parta / seja cortado, deve-se substituir esse mesmo cabo
    • +
    +

    EXTRA
    ...

    Casos de exemplo
    ...
    Exemplo de conexões de rede num prédio
    +

    O 8º Andar tem:
    +-> Bastidor de rede: UPS, Router, Server, Switch, Patchpanel
    +-> Ligações:
    +->-> Router -> (cabo RJ45) -> Switch
    +->-> UPS -> (cabo de alimentação) -> Server, Switch, Router
    +->-> Server -> (cabo RJ45) -> Router, ou Switch, ou PatchPanel -> Switch
    +->-> Switch -> (cabo RJ45) -> PatchPanel
    +->-> PatchPanel -> Ficha RJ45 -> Computador, AP
    +->-> AP -> WiFi -> Telemovel

    +
    +

    Para colocar internet na Cave:
    +-> Mini bastidor de rede: UPS, Switch, Patchpanel
    +->Ligações:
    +->-> PatchPanel (8º andar) -> (cabo primário RJ45, cabo secundário RJ45) -> Switch
    +->-> PatchPanel -> (cabo RJ45) -> Switch, AP
    +->-> AP -> WiFi -> Telemovel

    +
    +

    Para partilhar rede para o 9º Andar:
    +-> Switch L3 (se fosse colocado apenas um repetidor, no 9º andar ficariam com a mesma subnet que o 8º andar, o que causa interrupção no tráfego)

    +
    Criar uma rede local sem internet
    +

    É possível criar uma rede local (LAN) usando um switch ou hub, sendo que é necessária a utilização de um destes equipamentos ativos de rede.

    +
    Caso de telefonema de cliente que não tem internet
    +

    -> Pedir para confirmar se o router tem as luzes ligadas a piscar
    +-> Pedir para reiniciar
    +-> Se não funcionar e as luzes continuarem verdes, perguntar que dispositivo está a utilizar
    +-> Se for telemóvel:
    +-> Perguntar se tem o Wi-Fi está ligado
    +-> Se for no computador:
    +-> Perguntar se tem o Wi-Fi está ligado / se o cabo está encaixado
    +-> Se não funcionar, perguntar quando deu conta que não tinha internet e o que estava a fazer

    +

    Caso nada funcione, é necessário deslocar fisicamente ao local:
    +-> Verificar tudo acima referido
    +-> Se não funcionar, ir ao cmd -> ipconfig
    +-> Se o IP não começar por 10. ou 192. ou 172. (IP privado), quer dizer que o DHCP não atribuiu o IP correto. Algo se passa com o DHCP.
    +-> Se o IP começar pelos números acima referidos, devemos confirmar que a subnet mask é 255.255.255.0; que o gateway acabe em 1. ou 254; verificar o DNS:
    +->ipconfig /release
    +->ipconfig /renew
    +->ipconfig /flushdns
    +-> Se não funcionar, utilizar o nosso equipamento:
    +-> Desligar todos os cabos, menos o de fibra otica e eletricidade (pois pode estar com problemas de loopback). Reiniciar o router
    +-> Ligar o nosso computador, com o nosso cabo de rede, ao router*

    +

    -> Verificar novamente o ipconfig.
    +-> Se não funcionar. Contactar o ISP.

    +

    -> * Caso o nosso computador tenha internet, é necessário verificar os restantes equipamentos, pois pode ter algum avariado / a fazer curto circuito / uma porta avariada / algo a fazer loopback

    +
    Configurar uma impressora de um cliente
    +

    -> Confirmar se é uma Impressora de Rede - ver a interface / as portas;
    +-> Se tiver porta RJ45 / cabo RJ45, se conectar, ganharia o próximo IP dísponivel na pool do DHCP.
    +-> Se não tiver porta RJ45 / cabo RJ45, verificar se tem Wi-Fi;
    +-> Se não tiver Wi-Fi, usar um PrintServer;

    +
    Como guardar a informação da empresa de um cliente
    +

    Servidor NAS -> Network attached storage - O mais viável pois é um servidor de armazenamento ligado à rede. Assegurar salvaguarda dos dados com RAID
    +Servidor em bastidor -> Caro pois está dependente de outra quantidade de equipamentos
    +Cloud online (pagamento serviço) -> Não é viável

    +
    Aconselharia uma empresa a ter um servidor na empresa para ter um site?
    +

    -> Ter o servidor do site do nosso lado é mais fiável, no entanto é possível ser invadido por um hacker. No entanto se tiver o site num servidor externo, a responsabilidade é dessa mesma empresa.
    +-> O preço da luz não justifica o preço anual a pagar por um servidor online.

    +
    Info a mais
    ...
    NÃO SAI NO TESTE!
    +

    Sistema ZFS - Zettabyte File System - Não sai no teste / matéria
    +Muitas coisas relacionadas com Open-Source
    +Usa sistema RAID-Z - requer no mínimo 3 discos
    +Compatível com Linux, FreeBSD, Max OS X, SmartOS, Illumos e outros OSes grandes.
    +Porquê um NAS se posso fazer um sistema ZFS mais barato?

    +
    APRESENTAÇÕES
    ...

    tracert

      +
    • para rastrear a rota de um pacote; traça o caminho que os pacotes fazem para o destino
    • +
    • Necessário para ver quais são os intermediários no caminho dos pacotes
    • +
    • É possível ver se os nossos pacotes saltam da rede
    • +
    • Para saber por onde vai a nossa informação
    • +
    • tracert -w 2000 -> alterar o tempo do hop para no máximo de 2 segundos
    • +
    Broadcast: não passa nos routers porque são de nível 3

    route

      +
    • exibe e manipula as tabelas de rotas IP locais.
    • +
    • É possível obrigar os pacotes a ir para onde definir
    • +
    • Comandos: add, change, delete, print
    • +
    • route print -4 -> para mostrar a rota do IPv4
    • +
    • Pode ser usado por exemplo: se eu tiver 2 gateways, posso definir que 1 computador passe a informação por 1, e outro computador pelo outro gateway.
    • +

    telnet

      +
    • comando que permite ter acesso a certos servidores remotos (PC, routers, switch, ...)
    • +
    • os pedidos não são encriptados, por isso não é seguro
    • +
    • telnet freechess.org -> servidor online gratuito de xadrez
    • +
    • "Interagir" com um servidor
    • +
    • pode ser usado por exemplo: aceder a um servidor e alterar as suas definições
    • +
    • Era muito usado para por o servidor a fazer tarefas. Isto porque a net era lenta e o telnet não tem interface gráfica.
    • +
    • caso tudo falhe, o servidor telnet será a melhor opção (porta 23, padrão)
    • +
    • os comandos executam no servidor, e envia de volta
    • +
    • servidor apache/tomcat -> servidores básicos/leves, para mostrar páginas HTTP/s
    • +
    • se o servidor apache for abaixo é possível que não volte a ligar o equipamento, porque perdeu o firmware
    • +
    • Equipamentos ativos de rede devem ter algo que me ajude caso aconeça o que em cima foi referido -> servidor telnet. TV, impressoras, AP, etc... tem isto. Caso tudo falhe utiliza-se o telnet.
    • +
    • telnet é como a ultima opção para poder configurar, por exemplo, uma televisão
    • +
    • porta COM existe nas televisões, usada normalmente para programar a TV para mostrar as imagens de demonstração nas lojas.
    • +
    • mandar comando -> executa -> manda de volta
    • +
    • Apache e Tomcat -> servidores HTTP
    • +
    Abaixo de 1024 as portas estão pré definidas, mas podem ser alteradas.

    Firmware

      +
    • todos os dispositivos que compramos têm uma EPROM/EEPROM, e todos têm um firmware
    • +
    • Firmware: ficheiro que tem todas as opções do que é possível fazer com esse equipamento
    • +
    • Todos os dispositivos que não têm capacidade para ter um sistema operativo, têm um firmware
    • +
    • Tudo o que é hardware não funciona sem o software
    • +
    • A BIOS é firmware
    • +
    • Só o fabricante consegue fazer o firmware
    • +
    • A interface é feita à custa da firmware que tem instruções
    • +

    ssh

      +
    • Secure Shell
    • +
    • Foi criado para ter uma melhor resposta que o telnet
    • +
    • Comunicação criptografada
    • +
    • Integridade dos dados
    • +
    • Dados: estao seguros
    • +
    • ssh - porta padrão 22
    • +
    • sintaxe ex: ssh rafa@172.25.50.76
    • +
    • pede uma palavra pass depois disso
    • +
    • @ -> "at"
    • +
    • Desta forma, estamos conectados ao computador X a partir do computador Y
    • +
    • SSH vem instalado com o sistema operativo, no entanto não vinha no passado
    • +
    • Necessita do wi-fi conectador
    • +
    • ls -la -> ver as permissões de cada ficheiro
    • +
    • cat -> para imprimir no ecra um ficheiro por ex doc.
    • +
    • exit -> para sair do programa
    • +
    • No computador a acessar, teve que ser instalado o OpenSSH Server, para tornar o computador um servidor - Este software permite a abertura das portas
    • +
    • Ao contrário do telnet, o SSH tem um interface gráfico
    • +
    • O computador que vai acessar, ficará com a palavra pass do acedido. Uma alternativa de segurança seria inserir uma pen no computador que vai aceder e arrancar o linux por exemplo.
    • +

    Tenho um equipamento que nao me consigo ligar por https, como faço? Tentar HTTP
    +Mas tambem não consigo. Como faço? Tentar com SSH
    +Mas também nao consigo. Como faço? Telnet
    +E se também não conseguir? Ligação série

    Ligação serie - abrir aparelho, localizar os pins que a fabrica usou para programar a EPROM, (costumam ser 3 (VVC (positivo), Dados (negativo) e Ground)), e reprogramar o aparelho.
    +-> Ligação direta dentro da board.
    +-> Na ligação série os dados vão bit a bit.
    +-> Todos os aparelhos têm isto.
    +-> Usa-se para comunicação quando nada funciona

    Os portáteis não têm ligação série - Usar um adaptador USB para Série

    HTTPS -> HTTP -> SSH -> TELNET -> SÉRIE

    https - grafico e seguro
    +http - grafico e nao seguro
    +ssh - nao grafico / grafico e seguro
    +telnet - nao grafico e nao seguro

    Maior parte do routers têm um cabo especial; Por exemplo os routers da Cisco só são programáveis por um cabo especial - Cabo de Dados - É assim por uma questão de segurança, para não ser possível programar à distância

    arp

      +
    • É um protocolo da camada 4 do modelo TCP/IP
    • +
    • CMD arp - busca o MAC que corresponde ao IP na minha rede
    • +
    • O computador envia pacotes para todas as maquinas que estão ligadas à rede, faz a ligação entre endereço mac e endereço IP
    • +
    • Quando existe um primeiro contacto em broadcast, depois fica o registo
    • +
    • Para comunicar com um pacote fora da rede, o processo é o mesmo
    • +
    • O utilizador tem pouco controlo sobre o processo que sucede
    • +
    • Uma máquina quando envia os pacotes para outra, são enviados em broadcast
    • +

    O que é o ARP?
    +É um protocolo

    Para que serve o ARP?
    +É para resolver o MAC address de uma máquina da qual sabemos o seu IP.

    MAC -> é para a identificação local de uma máquina. É o numero de série da NIC. É um número único.
    +IP -> é para identificação global de uma máquina

    Uma NIC que tenha 2 interfaces tem 2 MAC?
    +-> Não. Cada NIC tem 1 único MAC. O router só tem 1 MAC.

    O protocolo IP é usado porque o MAC é privado, pois é perigoso saberem o nosso MAC.

    center
    +Os pacotes não têm sempre o mesmo nome em todas as camadas.

    SABER AS LAYERS DO PROTOCOL

    Há uma camada em que acontece encapsulamento com a origem e o destino

    Quando não se sabe o destino, esse pacote é colocado em standby e é lançado um protocolo ARP

    Cada máquina tem a sua tabela ARP

    Quando o ARP é lançado por um computador a pedir um MAC e bate num switch, o switch lança para todas as portas a pedir um MAC. Se fosse um router, não fazia nada porque não responde a broadcasts

    O ROUTER NÃO RESPONDE A BRODCAST (NÃO RESPONDE A ARP). Só os Switches

    OS ARPS SÓ SÃO VÁLIDOS DENTRO DA NOSSA REDE

    As máquinas comparam o IP que vem no pacote com o IP deles. Quando é o mesmo IP, essa máquina vai desempacotar e coloca lá o MAC dele e envia para a rede o pacote.

    O ARP é um protocolo que à custa do IP consegue MACs, porque precisa deles para encapsular os dados.

    DNS tem 13 servidores mundiais a nível de ROOT.

    Os pacotes ARP estão sempre a circular na rede porque as tabelas ARP estão sempre a ser refeitas dentro de segundos (max 40seg)

    PROTOCOLO TCP/IP EMPACOTA DE CIMA PARA BAIXO E DESEMPACOTADA DE BAIXO PARA CIMA.

    ENTRA POR CIMA PARA A INTERNET

    O modelo OSI é um modelo teorico

    Mandamos para

    Protocolo que deteta IPs duplicados na rede - DAD

    Se os pacotes estiverem com HTTP, alguém que cometa um ataque consegue abri-los. Mas não conseguiria abrir o HTTPS.

    Nos pacotes internet, estão lá encapsulados do IP e MAC de origem e de destino. O mac de destino vai vazio que é para ser preenchido quando chegar ao destino

    O pacote ARP dura 20/30 seg, faz reset depois desse tempo

    OS ARPS PASSAM SÓ ATÉ AO ROUTER

    Software que faz com que o hardware funcione: Drivers

    Modo promisco de uma NIC - apanhar todos os pacotes que andam na rede

    IP que se manda broadcast -> acaba em 255
    +bradcast -> mandar para todos

    ftp

    -> File Transfer protocol
    +-> serve para transferir ficheiro entre um dispositivo e um servidor ftp (ou um computador que tenha instalado o servidor ftp)
    +-> não é muito seguro - usar comando ftps (file transfer protocol secure)
    +-> usa a porta 21 por pre definição
    +-> o servidor serve o que la estiver instalado (roles)
    +-> A maquina destino tem que ter o servidor FTP instalado, a origem tem que ter uma aplicação (FTP) - a microsoft traz o ftp instalado por origem
    +-> Mesmo que sejam 10 clientes a pedir algo, estão todos ligados à porta 21 do servidor!
    +-> A maquina destino tem a porta 21 aberta. E o cliente? a porta que abre é uma qualquer

    Como se chama ao conjunto de ligação que tem o ip origem, a porta origem, o ip destino, e a porta destino? IP Socket.

    center

    O computador abre sockets para fora. Um computador tem vários sockets.

    Se abrir o mesmo site em varias abas, estamos a aceder à mesma porta mas no nosso computador abre várias à sorte.

    nslookup

    Name Server Lookup

      +
    • Pesquisa em relação ao DNS
    • +
    • DNS - Nome dominio que está interligado a um endereço ip
    • +
    • O comando faz uma pesquisa em relação a isso
    • +
    • nslookup nomedodominio -> nslookup www.google.com
    • +
    • nslookup endereçoIP -> nslookup 8.8.8.8
    • +
    • o comando tem modo interativo: se colocar so nslookup, depois é so colocar varios sites e ele vai devolvendo as respostas
    • +
    • nslookup nomedodominio servidor-DNS -> pesquisar um servidor específico do dominio - os endereços IP são diferentes
    • +
    • nslooup -type=AAA nomedodominio -> pesquisar só o IPv6
    • +
    • nslookup -debug nomedodominio -> dá mais informações para além dos IPs, por exemplo o header e o TTL
    • +
    • nslooup -input=arquivodeentrada -> possível pesquisar através de um ficheiro, por exemplo de texto que tenha lá um endereços - nao funciona com Windows.
    • +
    • Comando para saber que IP está ligado a um domínio e o contrário.
    • +
    • Se o nosso DNS tiver um problema, quando escrevemos o comando ele não irá associar o IP ao domínio e vice versa. Assim sabemos que o nosso DNS está com problema.
    • +
    • Também podemos ver se o nosso computador foi "hackeado" e os DNS foram trocados propositadamente, etc..
    • +
    • DNS server tem uma estrutura, existe um root server e depois existe uma hierarquia para baixo. -> não faz parte da matéria
    • +
    • Erro 404 -> page not found
    • +
    • DHCP atribuí-nos 4 coisas: IP, gateway, mascara, DNS
    • +
    • O DNS - é a ligação que existe entre o endereço e o IP (pesquisar melhor)
    • +

    EXTRA: Pesquisar os endereços IP 10 e algo desse género que foi dado numa aula que não vim.
    +Pesquisar mais sobre o 255(broadcast) e o 0!

    netstat

      +
    • netstat
    • +
    • netstat -n -> exibe as conexões TCP ativas expressas numericamente
    • +
    • netstat -b -> exibe as conexões TCP ativas e qual o programa que está a utilizar
    • +
    • netstat -a -> mostra as que estão abertas (bom para ver se há algum programa prejudicial que não tenhamos conhecimento)
    • +
    • resultados -> endereçoIP : porta
    • +
    • netstat -> mostra o estado da rede, as ligações que são feitas e recebidas. Pode ser usado para ver quais são os softwares que estão a usar a nossa rede.
    • +
    • Por exemplo: a aplicação da calculadora não aparece no netstat, no entanto o Microsoft Word aparecerá (pois está conectado à internet por causa das atualizações principalmente)
    • +

    ipconfig

      +
    • Exibe as informações sobre as configurações de rede e endereços IP do computador.
    • +
    • endereço ip, mascara de sub rede, gateway padrao, servidores DNS, e a configuração de ethernet
    • +
    • ipconfig /release - liberta o nosso endereço ip, e renova outro utilizando o renew. Pode ser usado por exemplo, quando colocamos manualmente o IP num posto de trabalho, e acontece o IP ser igual ao da impressora. Então fazemos release e renew
    • +
    • ipconfig /renew - renovar o nosso endereço ip, obter um novo endereço ip pelo dhcp
    • +
    • ipconfig /flushdns - limpa a cache de DNS
    • +
    • ipconfig /all - mostra todas as informações
    • +
    • se não devolver nenhum endereço IP, significa que o nosso computador não está conectado a nenhuma rede
    • +
    • O primeiro comando a ser utilizado para confirmar se temos rede, é o ipconfig, também podemos confirmar se o IP foi bem configurado (confirmar a classe por exemplo)
    • +

    Classes - ip publicos e privados -> PESQUISAR SOBRE ISTO
    +192.168.1 -> o 1 é a subrede
    +192.168.33 -> é outra subrede
    +Pode ser utilizado para identificar diferentes cargos, por exemplo numa empresa. A subrede 33 pode ser a que está configurada para os funcionários. Ou por exemplo, diversos pavilhões de uma escola, cada um deles terem uma subrede (pavilhao 1 - subrede 55, pavilhao 2 - subrede 56).

    ping

      +
    • ping -t -> continua a mandar medidos até o utilizador o parar
    • +
    • ping -a -> mostra ip e o nome resolvido
    • +
    • ping -n -> especifica o numero de mensagens de solicitação a enviar, o padrão é 4. +
        +
      • ping -n 10 -> numero de pacotes a serem enviados, vão ser enviados 10
      • +
      +
    • +
    • ping -l -> especifica o tamanho de dados em bytes a serem enviados; Usamos para, por exemplo, aumentar o tamanho para ver se o servidor consegue devolver um tamanho grande de dados. Para ver se o servidor se desenrasca a responder a pings maiores.
    • +
    • com o comando ping enviamos pacotes para um servidor de forma a confirmar se esse servidor responde bem
    • +
    • Exemplo: Estamos a tentar aceder a um site que não responde, podemos fazer ping para ver se o servidor está a funcionar corretamente. Caso esteja a funcionar corretamente, o problema poderá ser do browser.
    • +
    • A latência (o tempo de resposta) é uma outra informação muito importante neste comando.
    • +
    • Nem todos os servidores respondem a pings
    • +
    • DDOS -> varias pessoas a enviar pings para um servidor para o atacar
    • +

    netsh

      +
    • Network Shell
    • +
    • Shell - um programa que tem uma ligação mais proxima com os componentes do computador
    • +
    • É uma interface para os varios dispositivos do computador
    • +
    • netsh -> para entrar dentro da shell
    • +
    • em todos os contextos é possível usar o /?
    • +
    • wlan - ligação de todos os dispositivos wireless do computador
    • +
    • netsh wlan /show -> mostra toda a informação
    • +
    • netsh firewall /set -> é possivel alterar alguma coisa na configuração da firewall
    • +
    • netsh firewall /dump -> mostrar a configuração atual da firewall
    • +
    • É possível executar ficheiros com as linhas -> usar um documento e alterar a extensão para .bat -> é so executar esse ficheiro
    • +
    • p2p - conexão entre 2 computadores
    • +
    • Permite a criação de cliques para a facilidade e rapidez de configurações. Por exemplo, ligar diversos computadores a uma rede wi-fi -> é só executar o ficheiro
    • +
    • Importantes: +
        +
      • rpc - remote procedure call - ver!!!
      • +
      • firewall
      • +
      +
    • +
    • netsh wlan show networks
    • +
    • Ataque Social engineering -> Por dentro da rede fazer passar por alguem da rede
    • +

    nbtstat

      +
    • NetBIOS Statistics -> Estatísticas do NetBIOS
    • +
    • É para questões relacionadas com o protocolo NetBIOS
    • +
    • Lista conexões NetBIOS, estatísticas, limpar cache, resolve nomes e diagnostica problemas de rede
    • +
    • NetBIOS -> é um protocolo mais antigo de comunicação de rede, mas ainda funciona
    • +
    • Usado para fins de diagnóstico e solução de problemas em redes que ainda utilizam o NetBIOS
    • +
    • nbtstat/a [nome-computador-remoto] -> Exibir tabela de nomes NetBIOS do computador remoto com o nome do computador remoto
    • +
    • nbtstat/A [IP-computador-remoto] -> Exibir tabela de nomes NetBIOS do computador remoto com o IP do computador remoto
    • +

    info prof

      +
    • TODA a ajuda de todos os comandos, são os mais importantes
    • +
    • Mostra as estatísticas das conexões do protocolo TCP/IP usando o nbtstat
    • +
    • -a (nomePCRemoto)
    • +
    • -A (IPaddressPCRemoto)
    • +
    • Para funcioInfonar é necessário haver um computador remoto (usar um IP/Nome de um PC dentro da nossa rede)
    • +
    • O NETBios dava para enviar mensagens diretas para um computador através do seu IP, no entanto isso foi desativado
    • +
    • O protocolo NETBios está a ser desativado com o tempo. A maior razão para isto acontecer é por causa da segurança
    • +
    • Dá para ir buscar o MAC Adress de uma máquina com este comando. Com o MACAdress é possível fazer-nos passar por essa pessoa
    • +
    \ No newline at end of file diff --git a/Redes/Perguntas.html b/Redes/Perguntas.html index 73a76c0..916f781 100644 --- a/Redes/Perguntas.html +++ b/Redes/Perguntas.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
    TCP/IP
    ...
    Quantas portas tem o protocolo TCP/IP?
    +
    TCP/IP
    ...
    Quantas portas tem o protocolo TCP/IP?

    65.536

    O que é?

    É para os computadores se ligarem à internet.
    @@ -137,4 +137,11 @@ Porta 443.

    Lease time
    ...
    O que é o Lease Time?

    O tempo que router guarda o IP de um dispositivo específico. O tempo recomendado é de 48h mas é configurável.

    -
    \ No newline at end of file +
    RAID
    ...
    Qual a quantidade minima de discos para fazer RAID 6?
    +

    4 discos.

    +
    Qual a quantidade minima de discos para fazer RAID 5?
    +

    3 discos.

    +
    Esta configuração é boa?
    +

    Pasted image 20231003105042.png
    +Não!

    +
    \ No newline at end of file diff --git a/Redes/Siglas.html b/Redes/Siglas.html index f23a124..976d31f 100644 --- a/Redes/Siglas.html +++ b/Redes/Siglas.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
    +
    @@ -226,6 +226,16 @@ + + + + + + + + + +
    SiglaAddress Resolution Protocol
    CSSCascade Style Sheet
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/Redes/forms.html b/Redes/forms.html index 8cc38e6..4762f46 100644 --- a/Redes/forms.html +++ b/Redes/forms.html @@ -11,7 +11,7 @@ - + @@ -37,7 +37,7 @@ -
    ARP
    ...
      +
      ARP
      ...
      • ARP -> Address Resolution Protocol
      • Protocolo da camada 4 do modelo TCP/IP
      • MAC -> Media Access Control - Numero de série da NIC
      • @@ -167,4 +167,4 @@ - número máximo de pedidos: 4
        - espera em milissegundos para cada resposta: 400
        - forçar o uso do IPv4
        -Escreva pela ordem das regras.

      pathping -h 10 -n -q 4 -w 400 -4 8.8.8.8

      \ No newline at end of file +Escreva pela ordem das regras.

    pathping -h 10 -n -q 4 -w 400 -4 8.8.8.8

    \ No newline at end of file diff --git a/index.html b/index.html index dfd45eb..a12e8ed 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ - + @@ -37,8 +37,8 @@ -
    Informação
    +
    Informação

    O conteúdo deste website foi desenvolvido através de aulas e pesquisas no âmbito do curso Técnico/a de Informática - Sistemas, no IEFP.

    Atenção

    A informação poderá ser consultada livremente no âmbito da aprendizagem, mas ficará à responsabilidade do leitor a utilização e adaptação da mesma.

    -

    center

    \ No newline at end of file +

    center

    \ No newline at end of file